首页 > 解决方案 > Chrome 一次又一次地触发 OnBlur

问题描述

这是仅在 chrome 中一次又一次触发 Onblur 的代码,在 IE 中运行良好。在 Firefox 中,问题出现在创建两个输入元素时......有人可以帮我解决这个问题吗?我想要模糊警报(在实际代码中,我们检查表中的重复项并在发现重复项时发出警报,此代码只是一个示例,证明了我的需要)并且在警报框中单击“确定”后,我想得到焦点回来了。请查看 IE 中的正确行为。

  $(document).ready(function() {
    $("button").click(function() {
      $("div").append('<input type="text" name="txtCompanyName" maxlength="100" class="Company" style="margin-bottom:0px;width:170px"/>')
    });

    // With on():

    $("div").on("blur", ".Company", function() {
      alert($(this).text());
      $(".Company").focus();
    });
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<html>

<head>
</head>

<body>

  <div></div>
  <button>generate new element</button>

</body>

</html>

有趣的事情-当 chrome 开始重复触发事件并且您厌倦了一次又一次按“确定”,然后移动到 Chrome 中的其他选项卡,然后返回此选项卡单击“确定”,该模糊实例的问题得到解决. 魔法??

标签: javascriptjqueryhtmlgoogle-chromefirefox

解决方案


$("div").on("blur", ".Company", function() {
  alert($(this).text());
  $(".Company").focus();
})

焦点和模糊实际上是相反的。因此,如果您的焦点偏离(模糊),那么您将其焦点设置回公司,并且公司被附加到一个 div 中。所以它无限循环。


推荐阅读