Модератор форума: JonMagon |
Сообщество uCoz Вебмастеру JavaScript, Flash и прочие технологии Скрипт автозамены слов при вводе |
Скрипт автозамены слов при вводе |
Есть такой скрипт (стоит на форуме):
Код <script> $('* textarea').keyup(function() { var tw = $(this).val(); $(this).val(tw.replace('ааа','ввв')) }); </script> Он меняет в тексте (в поле "текстареа") слово "ааа" на "ввв" по мере ввода текста. Один неприятный нюанс: после срабатывания автозамены, курсор перемещается в конец и отредактировать/дописать что-либо строчкой выше "ввв" - невозможно, после каждого символа - переброс в конец последней строки Можно ли как-то убрать этот неприятный нюанс или привязать событие не к keyup, а к нажатию кнопки "Сохранить"? Сообщение отредактировал zarim - Воскресенье, 30 Окт 2016, 12:30:13
|
Код $(form).submit(function(){ // отлавливаем отправку формы $(textarea).val($(textarea).val().replace('ааа','ввв') ; // замена строки $(this).submit(); // отправка формы return false; }); Можешь забрать этот код и вставить его себе, сам знаешь куда.
Сообщение отредактировал Head-Mad - Воскресенье, 30 Окт 2016, 14:50:07
|
Head-Mad, спасибо! ... но пока что работать отказывается: сохранять - сохраняет, а вот замена не производится.
Тут вроде скобочки в конце не хватает: .replace('ааа','ввв')); однако это не помогло Так же попробовать изменить в 1 и 3 строке submit на button чтобы попробовать привязаться к предпросмотру (просто для контроля) - скрипт так же не хочет работать Прошу помощи))) ЗЫ. У кнопки "Сохранить" есть ещё id="frF16" name="sbm" к ним никак низя? Сообщение отредактировал zarim - Воскресенье, 30 Окт 2016, 17:27:02
|
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
|
Код $(frF150).click( function(){ $(message).val($(message).val().replace(/ааа/g,'ввв')); $(this).click(); return false; };); только что попробовал тут через консоль - нормально работает. Можешь забрать этот код и вставить его себе, сам знаешь куда.
Сообщение отредактировал Head-Mad - Понедельник, 31 Окт 2016, 18:52:39
|
Head-Mad, да, ты прав, этот код (для доп кнопки с ид. frF150) тут: https://jsfiddle.net/ работает отлично
Код $(frF150).click( function(){ $('textarea').val($('textarea').val().replace('ааа','ввв')); $(this).click(); return false; }); Осталось понять, почему он не работает в шаблоне... |
После $BODY$
Код <script> function checksubmit(){ document.addform.message.value=(' '+document.addform.message.value).replace(/aaa/ig,'bbb'); return true; } </script> |
Drinko, спасибо! Заработало с первого раза.
А как привязать вот такие замены: Код [URL=http://radikal.ru][IMG] на [img] [/IMG][/URL] на [/img] Если ставлю в кавычки - срабатывает только первое совпадение, а через /код/ig - мешают "/" в коде ( для блонди с моего форума, ну очень нужно) Сообщение отредактировал zarim - Вторник, 01 Ноя 2016, 12:24:33
|
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
|
Код <script> function checksubmit(){ document.addform.message.value=(' '+document.addform.message.value).replace(/- /ig,'– '); return true; } </script> Наверно, я куда-то ни туда вставляю код..., или что-то с кодом ни то... Мне нужно, чтобы на форуме (рассказы народ пишет) в сообщениях маленькое тире с пробелом после него "- " заменялось на длинное тире с пробелом после "– ". Чтобы получилось: - Я не знаю, о чём ты... – Я не знаю, о чём ты... Как это сделать? |
Код .replace(/-[ ]/ig,'— '); или Код .replace(/-\s/ig,'— '); Сообщение отредактировал Drinko - Понедельник, 12 Мар 2018, 20:42:14
|
Drinko, о! спасибо! Только интересный нюанс: в визуальной форме ответа замена не работает... Как это исправить? Что - куда нужно дописать?
Добавлено (12 Мар 2018, 21:05:31) Код .replace(/- /ig,'— '); .replace(/-[ ]/ig,'— '); .replace(/-\s/ig,'— '); Все три варианта работают, но только в режиме bb-кодов. В визуальном - не реагирует...( Что ни так? |
|
| |||