当对输入使用jquery .change时,只有当输入失去焦点时才会触发事件
在我的例子中,我需要在输入值更改后立即调用服务(检查值是否有效)。我怎么才能做到呢?
当对输入使用jquery .change时,只有当输入失去焦点时才会触发事件
在我的例子中,我需要在输入值更改后立即调用服务(检查值是否有效)。我怎么才能做到呢?
当前回答
如果你有HTML5:
Oninput(仅在实际发生更改时触发,但立即执行)
否则,你需要检查所有这些事件,这些事件可能表明输入元素的值发生了变化:
onchange Onkeyup(不是keydown或keypress,因为输入的值还没有新的击键) Onpaste(支持时)
也许:
onmouseup(我不确定这个)
其他回答
如果你有HTML5:
Oninput(仅在实际发生更改时触发,但立即执行)
否则,你需要检查所有这些事件,这些事件可能表明输入元素的值发生了变化:
onchange Onkeyup(不是keydown或keypress,因为输入的值还没有新的击键) Onpaste(支持时)
也许:
onmouseup(我不确定这个)
有jQuery事件,如keyup和keypress,你可以使用输入HTML元素。 您还可以使用blur()事件。
如果你想要在元素发生变化时触发事件,那么你可以使用keyup事件。
正如其他人已经建议的那样,在您的情况下,解决方案是嗅探多个事件。 执行这项工作的插件经常监听以下事件:
$input.on('change keydown keypress keyup mousedown click mouseup', handler);
如果你觉得合适,你也可以添加焦点、模糊和其他事件。 我建议不要在事件中进行监听,因为它会根据用户的行为在浏览器内存中加载进一步的程序来执行。
注意:使用JavaScript改变输入元素的值(例如通过jQuery .val()方法)不会触发上述任何事件。 (参考:https://api.jquery.com/change/)。
使用HTML5和不使用jQuery,你可以使用输入事件:
var input = document.querySelector('input');
input.addEventListener('input', function()
{
console.log('input changed to: ', input.value);
});
这将在每次输入文本更改时触发。
IE9+及其他浏览器支持。
在jsFiddle中试试。