jQuery警报在IE 8中不起作用

jQuery alert not working in IE 8

本文关键字:不起作用 IE jQuery      更新时间:2024-04-16

我有下面的脚本在IE 8中不起作用,它在其他浏览器中也能很好地工作,但在IE 8……所有用户得到的,即使选中了复选框输入,也是警报。任何想法都将不胜感激。

$(function() {
    $("form#insider-account").bind("keypress", function(e) {
       if (e.keyCode == 13) return false;
    });
   var isChecked = false;
   $("form#insider-account").change(function() {
      if ($("input#insideraccount_verified").is(":checked")) {
         isChecked = true; 
      } else {
         isChecked = false;   
      }
   });
   $("form#insider-account").submit(function(e) {
      if (!isChecked) {
         e.preventDefault();
         alert("You must agree that the information you provided is correct.");
      }
      else {
      }
   });
});

不确定为什么在与提交事件分开的事件中设置isChecked。我认为你的问题是在IE8中,这个:

 $("form#insider-account").change(...

在更改窗体内的控件时不会触发。为什么不将更改事件附加到控件本身:

$("input#insideraccount_verified").change(...

或者,更好的做法是,只需检查提交事件中是否选中了复选框,而不是使用您在其他事件中设置的变量:

$("form#insider-account").submit(function (e) {
            if (!$("input#insideraccount_verified").is(":checked")) {
                e.preventDefault();
                alert("You must agree that the information you provided is correct.");
            }
            else {
            }
        });

在表单中而不是表单iteself中侦听元素的更改,在谷歌上搜索"form change ie jquery"后,有许多结果表明这是一个问题,包括在ie 中未触发jquery.change()事件

建议使用on事件,它将监听表单中输入元素的更改事件,如下所示:

$("form#insider-account input").on('change', function() {
    isChecked = $("input#insideraccount_verified").is(":checked");
});