当我更改文本输入的值然后模糊该输入时,它再次触发input change
事件。如何将此模糊注册为输入更改?有没有办法防止这种情况?
$('input').on('input change',function(){
//do something
});
答案 0 :(得分:10)
$(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" />
&#13;
答案 1 :(得分:1)
只需从代码中删除change
事件即可。 change
事件被触发onblur
,但仅限于自上次模糊以来某些事情发生了变化。
使用:
$('input').on('input',function(){
//do something
});
答案 2 :(得分:0)
Jenish的回答是正确的。更重要的是......对于那些使用jQuery .on()
这样的委托监听器的人来说,这是一个允许您捕获其他表单元素(textarea,select等)上的所有更改事件并忽略更改的示例由文本INPUT上的模糊触发的事件。
$('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
});