我在Google Chrome上遇到了一些奇怪的事情。使用以下代码,我收到了无数的警报。
<input type="text" />
$('input[type="text"]').live('focus', function(event) {
alert('in');
});
Firefox和IE8都很好。
为什么会发生这种情况?
答案 0 :(得分:9)
我认为,这是因为关闭对话框(警告框)后,焦点会在文本框中返回,因此,该函数将再次触发。
答案 1 :(得分:5)
我认为这是因为每次单击警报的“确定”按钮时,浏览器都会将警报从警报发送到您的文本字段。您可能不会在代码的最终版本中弹出警报(methinks),因此从长远来看这可能不是问题。
答案 2 :(得分:2)
问题是alert()
正在从输入框中窃取焦点,然后在关闭对话框时恢复它。您可以通过在显示警报之前从输入框清除焦点来解决此问题。
答案 3 :(得分:1)
这种情况正在发生,因为它将焦点设置回文本框。 试试这个它应该在Chrome中正常工作
$('input[type="text"]').live('focus', function(event) {
alert('in');
$(this).blur();
});
答案 4 :(得分:0)
由于警报从您的文本框获得焦点,并且在关闭警报对话框时,焦点会重新开始。如果在函数内部执行任何非聚焦机制,它将只触发一次:http://jsfiddle.net/G8CmV/
<input type="text" />
<div id='tester'>Test:</div>
$('input[type="text"]').live('focus', function(event) {
$('#tester').html( $('#tester').html() + "_*" );
});