Страница 1 из 11
Модератор форума: JonMagon 
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Скрипт автозамены слов при вводе
Скрипт автозамены слов при вводе
zarim
Сообщений: 403
Репутация: 70
Уровень замечаний:

Сообщение # 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
Сообщений: 377
Репутация: 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
Сообщений: 403
Репутация: 70
Уровень замечаний:

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

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

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

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

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

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

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

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

Сообщение # 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
Сообщений: 377
Репутация: 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
Сообщений: 403
Репутация: 70
Уровень замечаний:

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

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

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

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

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

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

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

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

Сообщение # 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
Сообщений: 403
Репутация: 70
Уровень замечаний:

Сообщение # 11 | 16:25:53
Head-Mad, Drinko, ещё раз спасибо! "блонди-фильтр" заработал ))
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Скрипт автозамены слов при вводе
Страница 1 из 11
Поиск: