如何停止.focusout()多次触发?

时间:2018-01-04 11:26:52

标签: javascript jquery html

以下是我尝试做的简单再现:

https://jsfiddle.net/L9k4g2vw/1/

$('body').on('focusout', 'input', function(){
    alert('test');
});

<input type="text" name="textbox1" />
<input type="text" name="textbox2" />

当您将注意力集中在<input>之外时,它运行正常,但是,如果您将<input>直接聚焦到另一个<input>,它会创建一个循环。我究竟做错了什么?谢谢!

2 个答案:

答案 0 :(得分:2)

希望这有帮助......我使用了JQuery ....

$("<input />", {
  type: "number",
  min: "0"
}).addClass("someclass").appendTo($("#someid"));

$(document).on("focusout", ".someclass", function() {
  console.log("alert");
});
<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>

答案 1 :(得分:1)

alert焦点混乱。如果您不使用confirm(或其他旧的已弃用函数prompt$('body').on('focusout', 'input', function(){ console.log('test'); });等,您的代码就可以了;例如,1990年代的风格带来了世界 - 一站式功能):

<input type="text" name="textbox1" />
<input type="text" name="textbox2" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
List<String> strings = Arrays.asList("your sentence with word gete".split(" "));   
List<String> filtered = strings.stream().filter(s1 -> !s1.contains("gete")).collect(Collectors.toList());