2013-04-04 29 views
0

我有這個功能在只有IE8alert不會觸發和ajax部分根本不運行。然後提交表格,儘管return false。這是爲什麼發生?爲什麼只發生在IE8中?無法找到錯誤的AJAX函數提交表格

$(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; 
    }); 

}); 
+0

HTML請...也許你錯過了一個提交按鈕。我有這個問題,一旦瀏覽器忽略了一個jquery .submit(),因爲我的HTML – ggzone 2013-04-04 13:37:58

+0

中缺少一個在表單中有一個類型爲submit的按鈕。 – greener 2013-04-04 13:38:49

+0

你爲什麼不用分號來終止這一行?這可能是錯誤的原因,而不是在IE中讀取。 IE瀏覽器是閱讀JS的最差的瀏覽器。所以添加分號然後嘗試。 – 2013-04-04 13:39:39

回答

3

的問題可能是,這個陣列功能不存在IE8:

valCases.indexOf(false) 

這不會解釋失蹤的警告當然:)
編輯的,好的,我讀錯了你的代碼。它解釋了失蹤警報;)

你會發現這個鏈接下填充工具: MDN - Array indexOf

既然你已經使用jQuery,你可能會藏漢使用jQuery.inArray其回落到一個本地indexOf功能時可用。

+0

這將解釋缺少的警報。如果嘗試執行'valCases.indexOf(false)'時會引發錯誤,那麼警報不會顯示。 – 2013-04-04 13:41:01

+0

這是錯誤。使用polyfill爲IE8提供indexOf函數修復它。 – 2013-04-04 13:41:44

+0

[MDN頁面](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf)提供了有關爲不支持它的瀏覽器提供此功能的信息。不確定您是否想將其作爲答案的一部分。 – 2013-04-04 13:43:38

0

使用了AJAX功能吧:

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

在阿賈克斯

data :dd,