2013-04-23 200 views
1

我已經使用驗證函數爲單個字段運行,更改格式並返回布爾值來設置表單驗證。然後驗證表單我有&&在&&之前執行語句時強制執行語句&&爲false前的語句

var isValid = validate(field1) && validate(field2) ... ; 

我想每個無效的領域加以強調,但使用這種方法的有效性,一旦達到一個無效的視場光闌(由於道路&&作品)。

很顯然,我可以評估每個領域的驗證作爲一個單獨的聲明,然後結合後來的結果,但有什麼辦法可以迫使我們不要在一個錯誤的結果或其他保留方式後停止代碼要簡潔一行?

+0

VAR的isValid =驗證(字段1)驗證(域2)...;單身&應該這樣做 – HMR 2013-04-23 11:54:50

+0

@HMR:你爲什麼不發表這個答案?評論是澄清... – Cattode 2013-04-23 12:03:05

+0

@ Zapshu這個特定的解決方案可能無法正常工作,如果有任何驗證函數返回字符串。這並不是完全可以證明的方式,因爲&與&&完全不一樣,但當0和1或true和false的值返回時效果很好。 – HMR 2013-04-23 12:13:23

回答

4

你可以更邏輯地分解它(和可讀);

var isValid = validate(field1); 
    isValid = validate(field2) && isValid; 
    isValid = validate(fieldN) && isValid; 

您可以使用&作爲HMC建議使用!得到一個布爾!!(a & b & c)

甚至var isValid = true == validate(field1) == validate(field2) == validate(fieldN);

+0

第一種選擇是我想要避免做的事情(我不同意多行版本更具可讀性 - 使用&&'在一行中使其看起來幾乎像一個句子),但是你的'=='方法非常聰明。 – wheresrhys 2013-04-23 14:07:14