javascript - 检测jQuery中的输入变化?

标签 javascript jquery html

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

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

最佳答案

更新说明和示例

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

方法一、输入事件

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

在 jQuery 中这样做

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

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

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

方法二。keyup事件

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

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

方法3.定时器(setIntervalsetTimeout)

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

关于javascript - 检测jQuery中的输入变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6458840/

相关文章:

javascript - 在 contentEditable ="true"DIV 中修改 innerHTML 导致失去焦点或错误选择

javascript - Node.js 请求正文有一些额外的填充

jQuery AJAX - 返回的 HTML 消失

Jquery 克隆一个 div,从隐藏的 div 中提供新的 id 并显示新的 div

javascript - 动画无法按设置运行

php - JS中的动态选择选项

javascript正则表达式替换帮助!

javascript - .js 文件中 PHP 生成的代码

html - 如何修复侧边栏底部的最后一个 div 容器

javascript - 呈现 View 后使用 aurelia 将数据动态添加到页面