• Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: JonMagon  
Скрипт автозамены слов при вводе
zarim
Сообщений: 489
Репутация: 82
Уровень замечаний:

Сообщение # 1 | 12:26:33
Есть такой скрипт (стоит на форуме):
Код
<script>
$('* textarea').keyup(function() {
var tw = $(this).val();
$(this).val(tw.replace('ааа','ввв'))
});
</script>

Он меняет в тексте (в поле "текстареа") слово "ааа" на "ввв" по мере ввода текста.
Один неприятный нюанс: после срабатывания автозамены, курсор перемещается в конец и отредактировать/дописать что-либо строчкой выше "ввв" - невозможно, после каждого символа - переброс в конец последней строки

Можно ли как-то убрать этот неприятный нюанс или привязать событие не к keyup, а к нажатию кнопки "Сохранить"?
Сообщение отредактировал zarim - Воскресенье, 30 Окт 2016, 12:30:13
Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 2 | 14:46:57
Код
$(form).submit(function(){                    // отлавливаем отправку формы
$(textarea).val($(textarea).val().replace('ааа','ввв') ;  // замена строки
$(this).submit();                    // отправка формы
return false;
});

Можешь забрать этот код и вставить его себе, сам знаешь куда.
Сообщение отредактировал Head-Mad - Воскресенье, 30 Окт 2016, 14:50:07
zarim
Сообщений: 489
Репутация: 82
Уровень замечаний:

Сообщение # 3 | 17:26:09
Head-Mad, спасибо! ... но пока что работать отказывается: сохранять - сохраняет, а вот замена не производится.

Тут вроде скобочки в конце не хватает: .replace('ааа','ввв')); однако это не помогло
Так же попробовать изменить в 1 и 3 строке submit на button чтобы попробовать привязаться к предпросмотру (просто для контроля) - скрипт так же не хочет работать

Прошу помощи)))

ЗЫ. У кнопки "Сохранить" есть ещё id="frF16" name="sbm" к ним никак низя?
Сообщение отредактировал zarim - Воскресенье, 30 Окт 2016, 17:27:02
Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 4 | 18:47:13
Код

$(frF16).click(
    function(){
        $('txt').val(  $('txt').val().replace(/ааа/g,'ввв')  ) ;
        $(this).click();                   
        return false;
});

'txt' - замени на селектор текстового поля. В кавычках.

Можешь забрать этот код и вставить его себе, сам знаешь куда.
zarim
Сообщений: 489
Репутация: 82
Уровень замечаний:

Сообщение # 5 | 17:26:06
Head-Mad, что я делаю не так? Не хочет работать, хоть тресни

Код
<textarea cols="80" style="width:100%;" rows="10" id="message" name="message" class="postTextFl">ааа</textarea>
<input style="width:110px;" id="frF150" class="postPreview" type="button" value="Замена" />
<script>
$(frF150).click(
    function(){
        $('textarea').val($('textarea').val().replace('ааа','ввв'));
        $(this).click();                   
        return false;
});
</script>


Уже и на доп. кнопке пытаюсь, чтоб хоть как-то увидеть работу - бесполезно (код - в шаблоне формы добавления ответа форума)
Сообщение отредактировал zarim - Понедельник, 31 Окт 2016, 18:12:08
Head-Mad
Сообщений: 378
Репутация: 129

Сообщение # 6 | 18:51:51
Код
$(frF150).click(
    function(){
        $(message).val($(message).val().replace(/ааа/g,'ввв'));
        $(this).click();                   
        return false;
};);


только что попробовал тут через консоль - нормально работает.

Можешь забрать этот код и вставить его себе, сам знаешь куда.
Сообщение отредактировал Head-Mad - Понедельник, 31 Окт 2016, 18:52:39
zarim
Сообщений: 489
Репутация: 82
Уровень замечаний:

Сообщение # 7 | 19:18:54
Head-Mad, да, ты прав, этот код (для доп кнопки с ид. frF150) тут: https://jsfiddle.net/ работает отлично

Код
$(frF150).click(
    function(){
        $('textarea').val($('textarea').val().replace('ааа','ввв'));
        $(this).click();                   
        return false;
});

Осталось понять, почему он не работает в шаблоне...
Drinko
Сообщений: 909
Репутация: 773

Сообщение # 8 | 20:24:16
После $BODY$
Код
<script>
function checksubmit(){
document.addform.message.value=(' '+document.addform.message.value).replace(/aaa/ig,'bbb');
return true;
}
</script>

zarim
Сообщений: 489
Репутация: 82
Уровень замечаний:

Сообщение # 9 | 12:09:54
Drinko, спасибо! Заработало с первого раза.

А как привязать вот такие замены:
Код
[URL=http://radikal.ru][IMG]  на [img]
[/IMG][/URL] на [/img]

Если ставлю в кавычки - срабатывает только первое совпадение, а через /код/ig - мешают "/" в коде
( для блонди с моего форума, ну очень нужно)
Сообщение отредактировал zarim - Вторник, 01 Ноя 2016, 12:24:33
Drinko
Сообщений: 909
Репутация: 773

Сообщение # 10 | 12:48:51
zarim, так, как вы предлагаете, делать нельзя, ибо под замену попадут любые коды с окончанием [/IMG][/URL]. Правильно брать значение внутри тега img:
Код
.replace(/\[url=http:\/\/radikal\.ru]\[img\](.*?)\[\/img\]\[\/url\]/ig,'[img]$1[/img]')

Скрипт полностью:
Код
<script>
function checksubmit(){
document.addform.message.value=(' '+document.addform.message.value).replace(/aaa/ig,'bbb').replace(/\[url=http:\/\/radikal\.ru]\[img\](.*?)\[\/img\]\[\/url\]/ig,'[img]$1[/img]') ;
return true;
}
</script>

Т.д. очередной .replace() просто добавляем в конец функции.

Сообщение отредактировал Drinko - Вторник, 01 Ноя 2016, 12:52:15
zarim
Сообщений: 489
Репутация: 82
Уровень замечаний:

Сообщение # 11 | 16:25:53
Head-Mad, Drinko, ещё раз спасибо! "блонди-фильтр" заработал ))
KS_Brook
Сообщений: 6
Репутация: 0

Сообщение # 12 | 16:28:16
Код
<script>
function checksubmit(){
document.addform.message.value=(' '+document.addform.message.value).replace(/- /ig,'– ');
return true;
}
</script>

Наверно, я куда-то ни туда вставляю код..., или что-то с кодом ни то... Мне нужно, чтобы на форуме (рассказы народ пишет) в сообщениях маленькое тире с пробелом после него "- " заменялось на длинное тире с пробелом после "– ". Чтобы получилось:

- Я не знаю, о чём ты...
– Я не знаю, о чём ты...

Как это сделать?
Drinko
Сообщений: 909
Репутация: 773

Сообщение # 13 | 20:32:03
Код
.replace(/-[ ]/ig,'— ');

или
Код
.replace(/-\s/ig,'— ');

Сообщение отредактировал Drinko - Понедельник, 12 Мар 2018, 20:42:14
KS_Brook
Сообщений: 6
Репутация: 0

Сообщение # 14 | 21:05:31
Drinko, о! спасибо! Только интересный нюанс: в визуальной форме ответа замена не работает... Как это исправить? Что - куда нужно дописать?

Добавлено (12 Мар 2018, 21:05:31)
---------------------------------------------

Код
.replace(/- /ig,'— ');

.replace(/-[ ]/ig,'— ');

.replace(/-\s/ig,'— ');

Все три варианта работают, но только в режиме bb-кодов. В визуальном - не реагирует...( Что ни так?
Drinko
Сообщений: 909
Репутация: 773

Сообщение # 15 | 11:44:14
Цитата KS_Brook ()
Что ни так?

Кривой т.н. "визуальный" редактор.

  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: