2013-06-27 27 views
0

我有一些驗證功能,另一個名爲「validation()」的函數來調用我所有的驗證函數。在提交表單之前,這個函數調用和函數調用依次運行,當其中一個返回false時,下一個函數不會調用。我的要求是我怎樣才能獨立地打電話給他們?
這裏是一塊我的代碼:如何獨立調用函數?

function IsEmail() { 
    rows = document.getElementById('txtRows').value.split('#'); 
    types = document.getElementById('txtTypes').value.split('#'); 

    var CorrectFormat = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
    msg_req = ""; 
    var flg = true; 

    for (i = 0; i < rows.length; i++) { 
     if (types[i] == "email") { 
      var ctrl_val = document.getElementById('ctrl-' + i).value; 
      if (!CorrectFormat.test(ctrl_val)) { 
       msg_req += "invalid format ! \n"; 
       flg = false; 
      } 
     } 
    } 
    if (flg) 
     return true; 
    else 
     return false; 
} 
     function validations() { 
     if (!(required_field()) || !(Is Email())) { 
      var str = "there are some errors :\n"; 
      if (msg_req != "") { 
       str += msg_req; 
       alert(str); 
      } 
      msg_req = ""; 
      return false; 
     } 
     else { 
      msg_req = ""; 
      return true; 
     } 
    } 
+0

我可能是錯的,但似乎這兩個函數(required_field和ISEMAIL)有改變稱爲msg_req實例變量的副作用。我不太喜歡這樣的事情,最好將結果追加到本地變量msg_req中,如果你的第一個檢查變量是否爲空,那麼最好。 –

回答

1

的問題是,因爲使用的是||操作,只要一個條件返回false和被否定的邏輯操作的JavaScript引擎將不會執行其他功能變爲真有。

function validations() { 
    var valid = required_field(); 
    valid = isEmail() && valid; 
    if (!valid) { 
     var str = "there are some errors :\n"; 
     if (msg_req != "") { 
      str += msg_req; 
      alert(str); 
     } 
     msg_req = ""; 
     return false; 
    } 
    else { 
     msg_req = ""; 
     return true; 
    } 
} 
0
var requiredBool = required_field(); 
var isEmailBool = isEmail(); 

if(!requiredBool || !isEmailBool) 
{ 
... 
{