【问题标题】:JQuery event suppressionJQuery 事件抑制
【发布时间】:2010-10-04 17:42:53
【问题描述】:

我有一个输入框,并且我已将模糊和按键事件绑定到输入。但问题是当有按键事件时,模糊事件也会触发。发生按键事件时有什么方法可以抑制模糊事件?

谢谢

【问题讨论】:

  • 如果您发布代码示例会有所帮助。我认为不应该从按键触发模糊,除非您的按键处理程序实际上导致元素失去焦点。
  • 不要使用keypress事件,改用keyup事件(支持更好)

标签: javascript javascript-events jquery


【解决方案1】:

我只是为了测试而稍微简化了您的代码,但无法对事件触发的顺序得出相同的结论。 Firebug 的控制台显示以下代码执行产生 .keypress 总是在 .blur 之前发生

<script>

    $(document).ready(function() {

        $("#inpt").blur(function(e) {
            console.log(".blur");
        });

        $("#inpt").keypress(function(e) {
            console.log(".keypress");
        });
    });

</script>

您究竟想用 .onchange 和 .keypress 绑定到同一个字段来完成什么?如果您也发布了事件处理程序代码,可能会有所帮助。

另外,你也有一个全局的 document.keypress 绑定,有什么特别的原因吗?

【讨论】:

    【解决方案2】:

    您的 EventHandlerKeyPress() 函数中的某些内容听起来很模糊。

    【讨论】:

      【解决方案3】:

      <script src="jquery-1.3.1.js" type="text/javascript"></script>
      
      <script type="text/javascript">
      
          $(document).ready(function() {
      
              $("#inpt").blur(function(e) {
                  EventHandlerBlur(e);
              });
             $("#inpt").keypress(function(e) {
                    EventHandlerKeyPress(e);
                });
      
                $(document).keypress(function(e) {
                    EventHandlerKeyPress(e);
                });
      
      
          });
      </script>
      

      这是具有相同行为的代码。实际上在输入/甚至按下输入框上的任何键时都会导致模糊事件在按键事件之前首先触发..

      【讨论】:

        猜你喜欢
        • 2011-11-11
        • 2017-10-05
        • 2017-09-13
        • 1970-01-01
        • 2021-05-10
        • 1970-01-01
        • 1970-01-01
        • 2018-03-19
        • 1970-01-01
        相关资源
        最近更新 更多