Как отследить изменение текста поля ввода?

Событие «change» срабатывает только после смещения фокуса с изменённого input.

А хочется, чтобы сразу, как только пользователь полез что-то изменять.

$("input").on("edit", function() { <br>
  /* добавить в заголовок формы предупреждение "не сохранено" */<br>
  /* заблокировать закрытие окошка по ESC */<br>
});<br>
  • Вопрос задан
  • 80595 просмотров
Решения вопроса 1
DemiurgeOrion
@DemiurgeOrion
Есть замечательный плагин jQuery Text Change

www.zurb.com/playground/jquery-text-change-custom-event
Ответ написан
Пригласить эксперта
Ответы на вопрос 8
@marsdenden
Я понимаю, что уже много времени прошло, но на будущее

$(document).on("input",function(ev){
  console.log($(ev.target).val());
});


ловит все изменения, включая копипаст
Ответ написан
Комментировать
@ligaliga
Событие input. Оно как раз сразу реагирует:
https://learn.javascript.ru/events-change
Ответ написан
taliban
@taliban
php программист
onfocus — сохраняем длину текста в поле
onkeyUp — проверяем длину текста в поле, и если она не равна, то текст был изменен.
Ответ написан
Fr3nzy
@Fr3nzy
Пришлось мне для какого-то браузера недавно писать нечто подобное:
setInterval(function(){
    var curVal = $(".someInputs").val();
    var prevVal  = $(".someInputs").data("prevVal") || null;
    

    if (prevVal !== curVal) {
        // value changed
    }
}, 100)


А, вспомнил, это на тот случай, когда в поле происходила вставка тем или иным образом (ctrl+v, через контекстное меню, etc...)
Ответ написан
kwikpik
@kwikpik
Developer
Я бы не забывал про вставку текста из буфера обмена с помощью мышки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы