【发布时间】:2015-02-27 18:33:11
【问题描述】:
当我更改文本输入的值然后模糊该输入时,它会再次触发input change 事件。它如何将此模糊记录为输入更改?有没有办法防止这种情况发生?
$('input').on('input change',function(){
//do something
});
【问题讨论】:
标签: javascript jquery html
当我更改文本输入的值然后模糊该输入时,它会再次触发input change 事件。它如何将此模糊记录为输入更改?有没有办法防止这种情况发生?
$('input').on('input change',function(){
//do something
});
【问题讨论】:
标签: javascript jquery html
$(function(){
$('#onchange').on('change',function(){
alert('changed')
});
$('#onEveryLetter').on('input',function(){
alert('onEveryLetter')
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
onchange: <input type="text" id="onchange" name="Jenish" />
<br/>
onEveryLetter: <input type="text" id="onEveryLetter" name="Jenish" />
【讨论】:
input 事件具有不同的行为,并在更改和模糊时触发。我还没有找到避免这种行为的方法。
只需从您的代码中删除 change 事件。 change 事件被触发 onblur,但前提是自上次模糊后发生了某些更改。
用途:
$('input').on('input',function(){
//do something
});
【讨论】:
Jenish 的回答是正确的。更重要的是......对于那些使用像 jQuery .on() 这样的委托侦听器的人,这是一个示例,它允许您捕获其他表单元素(textarea、select 等)上的所有更改事件并忽略触发的更改事件通过文本输入模糊。
$('div').on('input change',function(e){
// This will keep the text INPUT from triggering for change event on blur.
if(e.type == 'change' && e.target.nodeName == 'INPUT') {
return false;
}
// Text INPUTs still pick up on the input event here
});
【讨论】: