正在检测jQuery中的输入更改
Detecting input change in jQuery?
在input
上使用jquery .change
时,只有当输入失去焦点时才会触发事件
在我的情况下,我需要在输入值更改后立即调用服务(检查值是否有效)。我怎样才能做到这一点?
更新以供澄清和示例
示例:http://jsfiddle.net/pxfunc/5kpeJ/
方法1。input
事件
在现代浏览器中,使用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.
});
方法2。keyup
事件
对于较旧的浏览器,使用keyup
事件(一旦释放键盘上的一个键,就会触发该事件,该事件可能会给出一种误报,因为当释放"w"时,输入值会发生变化,keyup
事件也会触发,但当释放"shift"键时,keyup
事件会触发,但是输入没有发生变化。)。此外,如果用户右键单击并从上下文菜单粘贴,此方法不会启动:
$('#someInput').keyup(function() {
$(this).val() // get the current value of the input field.
});
方法3。计时器(setInterval
或setTimeout
)
为了绕过keyup
的限制,您可以设置一个计时器来定期检查输入的值,以确定值的变化。您可以使用setInterval
或setTimeout
进行此计时器检查。请参阅此SO问题的标记答案:jQuery文本框更改事件,或参阅fiddle以获取使用focus
和blur
事件来启动和停止特定输入字段的计时器的工作示例
如果你有HTML5:
oninput
(仅当实际发生更改时才会触发,但会立即触发)
否则,您需要检查所有这些事件,这些事件可能指示输入元素的值发生了更改:
onchange
onkeyup
(而不是作为输入值的keydown
或keypress
中还没有新的击键)onpaste
(支持时)
也许:
onmouseup
(我不确定这个)
使用HTML5并且不使用jQuery,您可以使用input
事件:
var input = document.querySelector('input');
input.addEventListener('input', function()
{
console.log('input changed to: ', input.value);
});
每当输入的文本发生更改时,就会触发此项。
IE9+和其他浏览器支持。
试试这里的jsFiddle直播吧。
正如其他人已经建议的那样,您的解决方案是探查多个事件
做这项工作的插件经常监听以下事件:
$input.on('change key-down keypress key-up mouse-down click mouse-up',handler)
如果您认为合适,也可以添加focus
、blur
和其他事件
我建议不要在事件中进行监听,因为它会在浏览器内存中加载根据用户行为执行的进一步过程。
注意:请注意,使用JavaScript更改输入元素的值(例如通过jQuery .val()
方法)不会触发任何上述事件
(参考:https://api.jquery.com/change/)。
//。元素失去焦点时会触发模糊
$('#target').blur(function() {
alert($(this).val());
});
//手动触发使用:
$('#target').blur();
如果希望在元素内发生更改时触发事件,则可以使用keyup事件。
有jQuery事件,如keyup和keypress,您可以将其用于输入HTML元素。您还可以使用blur()事件。
这涵盖了使用jQuery 1.7及以上版本对输入的每一次更改:
$(".inputElement").on("input", null, null, callbackFunction);
- 当没有文本输入聚焦时检测空格键按下
- 检测输入值
- JQuery文件上载未检测到动态添加的输入
- 如何识别“;输入“;没有浏览器检测的事件
- 检测angularjs中的输入文本长度
- 使用JavaScript检测输入的字符
- jquery如何检测当前输入id
- 如何在呈现页面后使用 Java 脚本检测 dom 元素值的值是否有任何变化(例如,任何输入或复选框值更改)
- 检测失焦的击键,聚焦输入并填写(Jquery)
- 如何使用ie8检测文本输入何时发生更改
- javascript日期选择器检测输入字段中更改的值
- Jquery检测“;输入“;按键而不是单击鼠标
- 检测输入是否有焦点
- React-检测'输入'更改事件中的按键
- 如何检测用户何时在Google Places字段中输入无效位置
- jquery ui:检测输入中的首次时间变化
- 如何检测从数据列表中选择时更改的输入字段
- 检测用户是否没有't输入任何内容/删除输入jQuery
- 在聚焦后检测到文本输入上的非聚焦
- 如何检测用户何时在输入字段中按Enter键