2012-10-20 70 views
0

我的onsubmit形成爲什麼我會收到一個空警報框?

var bCancel = false; 
var errors = new Array(); 
function validateNewsForm(form) { 
    if (bCancel) { 
     return true; 
    } else {   
     errors = [];   
     var statusArray = new Array(); 
     statusArray.push(validateRequired(form)); 
     statusArray.push(validateMaxLength(form)); 
     statusArray.push(validateDate(form)); 

     for (status in statusArray) { 
      if (!status) {    
       alert(errors.join('\n'));    
       return false; 
      } 
     } 

     return true; 
    } 
} 

validateSmth()函數就可以js函數。但是,當我輸入正確的數據,我無法保存,因爲得到空警報。我只有一條警報消息,現在所有驗證功能都爲真(如果數據正確)

爲什麼我可以得到空警報?

+0

請出示的validate- Required /的MaxLength /日期函數 – sync

回答

3
for (status in statusArray) { 
    if (!status) {  

A for in loop爲您提供密鑰。對於一個數組,這些是索引。所以你實際上在做!0,!1等,!0評估爲true

你想要一個正常for循環:

for(var i = 0; i < statusArray.length; i++) { 
    if (!statusArray[i]) { 

而且,你用[]new Array()在一起。無處不在,最好只使用[]

+0

和最新要注意的是,在循環處理與陣列爲大於與一個for循環慢很多倍。 也看着jsperf:http://jsperf.com/testarrloop – C5H8NNaO4

1

因爲對於status = 0!狀態將是true。 修改後的代碼:

for (var status = 0; status < statusArray.length; status ++) { 
      if (!statusArray[status]) {    
       alert(errors.join('\n'));    
       return false; 
      } 
     } 
相關問題