在jQuery中检测输入更改?

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

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

更新以澄清和举例

示例:http://jsfiddle.net/pxfunc/5kpeJ/

方法1输入事件

在现代浏览器中,使用输入事件。当用户在文本字段中键入、粘贴、撤消时,基本上只要值从一个值更改为另一个值,就会触发此事件

在jQuery中,这样做

$('#someInput').bind('input',function(){
$(this).val()//获取输入字段的当前值。
});

从jQuery 1.7开始,将bind替换为on

$('someInput')。在('input',function(){
$(this).val()//获取输入字段的当前值。
});

方法2键控事件

对于较旧的浏览器,使用keyup事件(一旦键盘上的某个键被释放,就会触发此事件,此事件可能会给出一种误报,因为当释放“w”时,输入值会发生变化,keyup事件会触发,但当“shift”时也会触发键被释放keyup事件触发,但未对输入进行任何更改。)。此外,如果用户右键单击并从关联菜单粘贴,则不会激发此方法:

$('#someInput').keyup(函数(){
$(this).val()//获取输入字段的当前值。
});

方法3。计时器(setIntervalsetTimeout

要绕过keyup的限制,您可以设置一个计时器,定期检查输入值,以确定值的变化。您可以使用setIntervalsetTimeout执行此计时器检查。请参阅此SO问题的标记答案:jQuery textbox change event,或参阅fiddle,了解使用focusblur事件启动和停止特定输入字段计时器的工作示例

发表评论