【问题标题】:input change event triggered on blur模糊时触发的输入更改事件
【发布时间】:2015-02-27 18:33:11
【问题描述】:

当我更改文本输入的值然后模糊该输入时,它会再次触发input change 事件。它如何将此模糊记录为输入更改?有没有办法防止这种情况发生?

$('input').on('input change',function(){
 //do something
});

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    $(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" />

    【讨论】:

    • 感谢代码,毕竟我不需要更改部分 +1
    • @user2014429 此处仅作说明,就行为而言,更改等于模糊 :)
    • 给移动用户的一条评论:在 Chrome 移动设备(可能是其他移动设备)上,input 事件具有不同的行为,并在更改模糊时触发。我还没有找到避免这种行为的方法。
    【解决方案2】:

    只需从您的代码中删除 change 事件。 change 事件被触发 onblur,但前提是自上次模糊后发生了某些更改。

    用途:

    $('input').on('input',function(){
     //do something
    });
    

    【讨论】:

      【解决方案3】:

      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
      });
      

      【讨论】:

        猜你喜欢
        • 2013-10-26
        • 1970-01-01
        • 1970-01-01
        • 2021-02-19
        • 2018-06-02
        • 2019-12-28
        • 1970-01-01
        • 2011-10-24
        • 1970-01-01
        相关资源
        最近更新 更多