0

我有这个功能,在IE8 中只有alert触发并且ajax部分根本不运行。尽管return false. 为什么会这样?为什么它只发生在 IE8 中?

$(document).ready(function(){
    $('form[name="DownloadForm"]').submit(function(){
        var valCases = new Array()
        valCases.push(($('input[name="firstname"]').val()!="") ? true : false )
        valCases.push(($('input[name="lastname"]').val()!="") ? true : false )
        valCases.push(($('input[name="company"]').val()!="") ? true : false )
        valCases.push(($('input[name="email"]').val()!="") ? true : false )

        alert(valCases.indexOf(false)) //this alert doesn't fire!


        if (valCases.indexOf(false)==-1) {
            $.ajax({
                url: url,
                type: 'POST',
                data: $(this).serialize(),
                beforeSend: function(){
                    //before
                },
                success: function(data) {
                    //do something
                },
                error: function(data) {
                    //error
                }
            });
            return false;
      } else {
            $('.inl-table tr').each(function(index){
                if (index==valCases.indexOf(false)) {
                    $(this).next().children('th').css('color','red');
                }
            });
            return false;
      }
      return false;
    });

});
4

2 回答 2

3

问题可能是,这个数组函数在 IE8 中不存在:

valCases.indexOf(false)

当然,这不能解释丢失的警报:)
编辑:好的,我读错了你的代码。它解释了丢失的警报;)

你会在这个链接下找到一个 polyfill: MDN - Array indexOf

由于您已经在使用 jQuery,因此您也可以在可用时使用jQuery.inArray它回退到本机indexOf函数。

于 2013-04-04T13:38:38.043 回答
0

用掉ajax函数吧:

var dd =$(this).serialize();

在阿贾克斯

data :dd,
于 2013-04-04T13:39:08.567 回答