use*_*251 4 javascript jquery google-chrome focusout
我有两个输入,一个静态:
<input type="text" class="someclass" />
Run Code Online (Sandbox Code Playgroud)
及其他动态:
$("<input />", {
    type: "number",
    min: "0"
}).addClass("someclass").appendTo($("#someid"));
Run Code Online (Sandbox Code Playgroud)
这段代码在静态输入中运行良好:
$(document).on("focusout", ".someclass", function(){ alert("hello!");});
Run Code Online (Sandbox Code Playgroud)
但是对于动态输入会生成带有警报的无限循环,这种情况只发生在 Chrome 中,有人有什么想法吗?
错误是当焦点集中在同一类的其他输入上时
正如 Terry 所说,警报框并不是解决任何 JS 问题的最佳方法。
将alert替换为console.log()表明该事件在Chrome和其他浏览器中仅触发一次。
$("<input />", {
  type: "number",
  min: "0"
}).addClass("someclass").appendTo($("#someid"));
$(document).on("focusout", ".someclass", function() {
  console.log("alert");
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="someclass" />
<div id='someid'>
</div>Run Code Online (Sandbox Code Playgroud)
看这个答案:
我认为这是因为每次您单击警报的“确定”按钮时,浏览器都会将焦点从警报发送到您的文本字段。您可能不会在代码的最终版本中弹出警报(我认为),因此从长远来看这可能不是问题。