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