Я обнаружил, что jQuery событие изменения на поле не'т стрелять, пока я щелкните за пределами текстового поля.
HTML-код:
<input type="text" id="textbox" />
ДШ:
$("#textbox").change(function() {alert("Change detected!");});
См. [демо на JSFiddle][1]
Мое приложение требует, чтобы событие, чтобы быть уволен при каждом изменении символа в текстовое поле. Я даже вместо этого попытался использовать клавиша вверх...
$("#textbox").keyup(function() {alert("Keyup detected!");});
...но это'ы известный факт, что событие keyup это'т обстреляли правой кнопкой мыши и "вставить".
Любой обходной путь? Имея обе слушателей вызовет каких-либо проблем?
Обязательными для обеих событий-это типичный способ сделать это. Вы также можете привязать к событию вставить.
Вы можете связать несколько подобных мероприятий:
$("#textbox").on('change keyup paste', function() {
console.log('I am pretty sure the text box changed');
});
Если ты хотел быть педантичным об этом, вы должны также привязываться к mouseup, чтобы удовлетворить перетаскивание текста вокруг, и добавить функция lastvalue
переменной, чтобы гарантировать, что текст на самом деле сделал изменения:
var lastValue = '';
$("#textbox").on('change keyup paste mouseup', function() {
if ($(this).val() != lastValue) {
lastValue = $(this).val();
console.log('The text box really changed this time');
}
});
И если вы хотите быть педантичным супер пупер`, то вы должны использовать интервальный таймер для удовлетворения автоматического заполнения, плагины и т. д:
var lastValue = '';
setInterval(function() {
if ($("#textbox").val() != lastValue) {
lastValue = $("#textbox").val();
console.log('I am definitely sure the text box realy realy changed this time');
}
}, 500);
На современных браузерах, вы можете использовать ввода
событие:
[Демо][2]
$("#textbox").on('input',function() {alert("Change detected!");});
if you write anything in your textbox, the event gets fired.
code as follows :
HTML-код:
<input type="text" id="textbox" />
ДШ:
<script type="text/javascript">
$(function () {
$("#textbox").bind('input', function() {
alert("letter entered");
});
});
</script>
Попробуйте это:
$("#textbox").bind('paste',function() {alert("Change detected!");});
См. [демо на JSFiddle][1].
Попробуйте ниже код:
$("#textbox").on('change keypress paste', function() {
console.log("Handler for .keypress() called.");
});
Читая ваши комментарии, взяли меня в грязное исправить. Это не правильный путь, я знаю, но можно обойти.
$(function() {
$( "#inputFieldId" ).autocomplete({
source: function( event, ui ) {
alert("do your functions here");
return false;
}
});
});