在chrome中警告后不会触发模糊事件,但可以在Firefox和IE

时间:2016-06-30 02:57:26

标签: javascript jquery google-chrome internet-explorer firefox

以下是代码in jsfiddle.

1.更改文本框上的文本后,出现警告弹出窗口,单击确定,然后触发模糊事件并更改文本。这在Firefox和IE中有效,但在Chrome中,模糊事件不会被触发,因此,文本不会改变。为什么呢?

2.我观察到一些奇怪的事情。更改文本框中的文本,切换到其他应用程序(或Ctrl + T新选项卡),出现警告弹出窗口,单击确定,现在Chrome上会触发模糊事件。即使在警报之前,文本框的isFocus也是假的,并且在模糊功能中。如果文本框已经失去焦点,为什么它甚至会发射?

$(document).ready(function() {
  $("#id1").val('Original Text');
  $("#id1").blur(function() {
    console.log('When blur fire: Input has focus: ' + $("#id1").is(":focus"));
    actionBlur(jQuery(this));
  });
});

function actionBlur($field) {
  $field.val("Blur fired");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<input id="id1" property="prop1" onchange="scriptAlert();" />
<script>
  var isFocus;

  function scriptAlert() {
      isFocus = $("#id1").is(":focus");
      console.log('Before alert: Input has focus: ' + $("#id1").is(":focus"));
      alert('input has Focus: ' + $("#id1").is(":focus")); console.log('After alert: Input has focus: ' + $("#id1").is(":focus"));
      }
</script>

1 个答案:

答案 0 :(得分:0)

一件小事 -

alert('input has Focus: ' + $("#id1").is(":focus");

应该是 -

alert('input has Focus: ' + $("#id1").is(":focus"));

您的Chrome控制台应显示此错误。修复后,该脚本在Firefox和Chrome(版本51.0.2704.106 m)中对我来说都很好。