当对输入使用jquery .change时,只有当输入失去焦点时才会触发事件

在我的例子中,我需要在输入值更改后立即调用服务(检查值是否有效)。我怎么才能做到呢?


当前回答

// .blur在元素失去焦点时触发

$('#target').blur(function() {
  alert($(this).val());
});

//触发手动使用:

$('#target').blur();

其他回答

// .blur在元素失去焦点时触发

$('#target').blur(function() {
  alert($(this).val());
});

//触发手动使用:

$('#target').blur();

如果你有HTML5:

Oninput(仅在实际发生更改时触发,但立即执行)

否则,你需要检查所有这些事件,这些事件可能表明输入元素的值发生了变化:

onchange Onkeyup(不是keydown或keypress,因为输入的值还没有新的击键) Onpaste(支持时)

也许:

onmouseup(我不确定这个)

这涵盖了使用jQuery 1.7及以上版本对输入的所有更改:

$(".inputElement").on("input", null, null, callbackFunction);

如果你想要在元素发生变化时触发事件,那么你可以使用keyup事件。

使用HTML5和不使用jQuery,你可以使用输入事件:

var input = document.querySelector('input');

input.addEventListener('input', function()
{
    console.log('input changed to: ', input.value);
});

这将在每次输入文本更改时触发。

IE9+及其他浏览器支持。

在jsFiddle中试试。