一尘不染

在jQuery中检测输入更改?

javascript

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

就我而言,我需要在输入值更改后立即调用该服务(检查值是否有效)。我该怎么做?


阅读 316

收藏
2020-04-25

共1个答案

一尘不染

更新为澄清和示例

方法1。input事件

在现代浏览器中使用input事件。当用户在任何时候将值从一个值更改为另一个值时,都将在用户键入文本字段,粘贴,撤消操作时触发此事件。

在jQuery中这样做

$('#someInput').bind('input', function() { 
    $(this).val() // get the current value of the input field.
});

从jQuery 1.7开始,替换bindon

$('#someInput').on('input', function() { 
    $(this).val() // get the current value of the input field.
});

方法2。keyup事件

对于较旧的浏览器,请使用keyup事件(一旦释放了键盘上的某个键,就会触发该事件,该事件会产生某种误报,因为释放“w”时,输入值会更改,并且该keyup事件会触发keyup事件触发时释放“shift”键,但未对输入进行任何更改。)如果用户右键单击并从上下文菜单中粘贴,此方法也不会触发:

$('#someInput').keyup(function() {
    $(this).val() // get the current value of the input field.
});

方法3。计时器(setIntervalsetTimeout

为了解决这些限制,keyup您可以设置一个计时器来定期检查输入的值以确定值的变化。您可以使用setIntervalsetTimeout进行此计时器检查。请参阅以下SO问题的标记答案:jQuery文本框更改事件,或查看小提琴,获取使用focusblur事件的工作示例,以启动和停止特定输入字段的计时器

2020-04-25