2013-10-04 11 views
0

後,這裏是我的jQuery片斷jQuery的POST數據到服務器成功驗證

$("#saveBankDetails").click(function(){ 
      if($('#firstBankDetail').is(':visible')) { 
       return validateFirstBankDetails(); 
      }  
      if($('#secondBankDetail').is(':visible')) { 
       return validateSecondBankDetails(); 
      } 
      if($('#thirdBankDetail').is(':visible')) { 
       return validateThirdBankDetails(); 
      } 
      if($('#fourthBankDetail').is(':visible')) { 
       return validateFourthBankDetails(); 
      } 
     }); 

我想要實現的是執行驗證,如果元素firstBankDetail,secondBankDetail等都是可見的。 validateFirstBankDetailsvalidateSecondBankDetails都是javascript的功能。

我已經使用return來避免在驗證失敗時將數據發佈到服務器。但是,如果validateFirstBankDetails()返回true,並且代碼不能繼續前進,那麼看起來數據已經發布。我需要做哪些修改,以便代碼繼續前進,併爲secondBankDetail應用驗證?

+0

發表您的完整代碼 – Amit

+0

你的第一個有效的回報停止下面的測試執行。改爲在所有測試結束時返回。 –

+0

可能重複[jQuery發佈數據到服務器只有當驗證通過](http://stackoverflow.com/questions/19178874/jquery-post-data-to-server-only-if-validation-passes) – Sparky

回答

0

以下@Samich建議後,我想出了這個解決方案。它工作正常。

$('form').submit(function (event) { 
      if($('#firstBankDetail').is(':visible')) { 
       if(!validateFirstBankDetails()){ 
        event.preventDefault(); 
       } 
      } 
      if($('#secondBankDetail').is(':visible')) { 
       if(!validateSecondBankDetails()){ 
       event.preventDefault(); 
       } 
      } 
      if($('#thirdBankDetail').is(':visible')) { 
       if(!validateThirdBankDetails()){ 
        event.preventDefault(); 
       } 
      } 
      if($('#fourthBankDetail').is(':visible')) { 
       if(!validateFourthBankDetails()){ 
        event.preventDefault(); 
       } 
      } 
     }); 

這是比較容易過

0

如果驗證失敗

return false 

這個添加到Click事件的結束。

1

收集你的結果的單一變量:

$("#saveBankDetails").click(function(){ 
      var restult = true; 
      if($('#firstBankDetail').is(':visible')) { 
       result &= validateFirstBankDetails(); 
      }  
      if($('#secondBankDetail').is(':visible')) { 
       result &= validateSecondBankDetails(); 
      } 
      if($('#thirdBankDetail').is(':visible')) { 
       result &= validateThirdBankDetails(); 
      } 
      if($('#fourthBankDetail').is(':visible')) { 
       result &= validateFourthBankDetails(); 
      } 

      return result; 
     }); 

在這種情況下,如果至少一個驗證失敗 - 整個窗體驗證將失敗。

P.S.不如訂閱form提交事件處理校驗有: Prevent Default on Form Submit jQuery

+0

不起作用我得到的結果爲零,並提交表單。將在表格 –

+0

上看到預防默認值如果您將結果取爲'0',那麼您的驗證方法不僅會返回true/false。檢查他們。 – Samich

-1
$("#saveBankDetails").click(function(){ 
     if($('#firstBankDetail').is(':visible')) { 
      return validateFirstBankDetails(); 
     }  
     if($('#secondBankDetail').is(':visible')) { 
      return validateSecondBankDetails(); 
     } 
     if($('#thirdBankDetail').is(':visible')) { 
      return validateThirdBankDetails(); 
     } 
     if($('#fourthBankDetail').is(':visible')) { 
      return validateFourthBankDetails(); 
     } 
     return false; 

    }); 

如果你不想控制返回到你可以添加返回false服務器;

0

你也可以試試這個

$("#saveBankDetails").click(function(){ 
     var result = false; 
     if($('#firstBankDetail').is(':visible')) { 
      result = validateFirstBankDetails(); 
     }  
     if($('#secondBankDetail').is(':visible')) { 
      result = validateSecondBankDetails(); 
     } 
     if($('#thirdBankDetail').is(':visible')) { 
      result = validateThirdBankDetails(); 
     } 
     if($('#fourthBankDetail').is(':visible')) { 
      result = validateFourthBankDetails(); 
     } 
     return result; 
    }); 
+0

在你的情況下,如果最後的驗證會成功,那麼所有的驗證填充成功。 – Samich

+0

如果所有三個驗證都失敗並且只有第四個驗證成功,結果將爲true –

0

給那些元素class,然後循環它們:

$("#saveBankDetails").click(function(){ 
    var all_elements = $('.newClass'); 
    all_elements.each(function() { 
     if (!$(this).is(':visible')) { 
      //do something if not visible 
      return false; 
     } 
    }); 
}); 
-1
$("#saveBankDetails").click(function(){ 
     var result = 0; var visible = 0; 
     if($('#firstBankDetail').is(':visible')) { 
      result = result + (1 & validateFirstBankDetails()); 
      visible++; 
     }  
     if($('#secondBankDetail').is(':visible')) { 
      result = result + (1 & validateFirstBankDetails()); 
      visible++; 
     } 
     if($('#thirdBankDetail').is(':visible')) { 
      result = result + (1 & validateFirstBankDetails()); 
      visible++; 
     } 
     if($('#fourthBankDetail').is(':visible')) { 
      result = result + (1 & validateFirstBankDetails()); 
      visible++; 
     } 
     if(result == visible) {return true;} 
     else{return false;} 
    }); 
+0

將不起作用,因爲如果只有2個div可見,結果將爲2 –