在事件.change
上使用jquery时,input
仅当输入失去焦点时才会触发事件
就我而言,我需要在输入值更改后立即调用该服务(检查值是否有效)。我该怎么做?
在事件.change
上使用jquery时,input
仅当输入失去焦点时才会触发事件
就我而言,我需要在输入值更改后立即调用该服务(检查值是否有效)。我该怎么做?
Answers:
更新为澄清和示例
范例: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
事件会触发keyup
事件触发时释放“ shift”键,但未对输入进行任何更改。)如果用户右键单击并从上下文菜单中粘贴,此方法也不会触发:
$('#someInput').keyup(function() {
$(this).val() // get the current value of the input field.
});
方法3。计时器(setInterval
或setTimeout
)
为了解决这些限制,keyup
您可以设置一个计时器来定期检查输入的值以确定值的变化。您可以使用setInterval
或setTimeout
进行此计时器检查。请参阅以下SO问题的标记答案:jQuery文本框更改事件,或查看小提琴以获取使用focus
和blur
事件的工作示例,以启动和停止特定输入字段的计时器
innerText
或value
属性(模拟用户输入)才会触发MutationObserver事件jsfiddle.net/pxfunc/ 04chgpws / 1(请参阅console.log中的MutationObserver事件日志记录)。您可以查看其他测试用例吗?
使用HTML5且不使用jQuery,您可以使用input
event:
var input = document.querySelector('input');
input.addEventListener('input', function()
{
console.log('input changed to: ', input.value);
});
每次输入文本更改时都会触发。
在IE9 +和其他浏览器中受支持。
正如其他人已经建议的那样,您的解决方案是嗅探多个事件。
执行此工作的插件通常会侦听以下事件:
$ input.on('change keydown keypress keyup mousedown click mouseup',handler);。on ('change keydown keypress keyup mousedown click mouseup' ,handler );
如果您认为合适,可以添加focus
,blur
以及其他事件。
我建议不要超出监听的事件,因为它会根据用户的行为在浏览器内存中加载进一步执行的程序。
注意:请注意,使用JavaScript更改输入元素的值(例如,通过jQuery .val()
方法)不会触发上述任何事件。
(参考: https: //api.jquery.com/change/)。
.val()
在输入字段发生更改事件后调用相应的动作,您可以执行以下操作…… $('#element').val(whatever).change()
如果希望元素中发生任何更改时都触发该事件,则可以使用keyup事件。
onchange
或自己跟踪状态。 keydown
不起作用,因为它在更改输入状态之前触发。