Не имеет ли элемент ввода текста события изменения? Когда я прикрепляю обработчик события изменения к текстовому вводу, он не запускается. Keyup уволен, но keyup недостаточно для обнаружения изменения, так как есть, очевидно, другие способы ввода текста во вход.
Событие изменения текстового поля jQuery
Ответ 1
Нет реального решения этого - даже в ссылках на другие вопросы, приведенные выше. В конце концов я решил использовать setTimeout
и вызывать метод, который проверяет каждую секунду! Не идеальное решение, но решение, которое работает и код, который я вызываю, достаточно просто, чтобы не влиять на производительность, вызывая все время.
function InitPageControls() {
CheckIfChanged();
}
function CheckIfChanged() {
// do logic
setTimeout(function () {
CheckIfChanged();
}, 1000);
}
Надеюсь, что это поможет кому-то в будущем, поскольку кажется, что нет верного способа добиться этого с помощью обработчиков событий...
Ответ 2
Спецификация HTML4 для элемента <input>
указывает, что доступны следующие события script:
onfocus, onblur, onselect, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, OnKeyUp
вот пример, который связывается со всеми этими событиями и показывает, что происходит http://jsfiddle.net/pxfunc/zJ7Lf/
Я думаю, что вы можете отфильтровать, какие события действительно релевантны вашей ситуации и определить, какое текстовое значение было до и после события, чтобы определить изменение
Ответ 3
Я обнаружил, что это работает:
$(document).ready(function(){
$('textarea').bind('input propertychange', function() {
//do your update here
}
})
Ответ 4
Событие изменения запускается только после того, как вход теряет фокус (и был изменен).
Ответ 5
Вы можете достичь этого:
$(document).ready(function(){
$('#textBox').keyup(function () {alert('changed');});
});
или с изменением (скопировать дескриптор копирования правой кнопкой мыши):
$(document).ready(function(){
$('#textBox2').change(function () {alert('changed');});
});
Вот Демо
Ответ 6
$('#input').on("input",function () {alert('changed');});
работает для меня.