jQuery文本框更改事件不会触发,直到文本框失去焦点?

我发现文本框上的jQuery change事件不会触发,直到我单击文本框外。

HTML:

<input type="text" id="textbox" />

JS:

$("#textbox").change(function() {alert("Change detected!");});

demo on JSFiddle

我的应用程序需要在文本框中的每个字符更改触发事件。我甚至尝试使用keyup …

$("#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);
http://stackoverflow.com/questions/17317465/jquery-textbox-change-event-doesnt-fire-until-textbox-loses-focus

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:jQuery文本框更改事件不会触发,直到文本框失去焦点?