2013-06-27 2 views
0

У меня есть некоторые функции для проверки и другая функция с именем «validation()», чтобы вызвать все мои функции проверки. перед переданной формой эта функция вызывает и функции, называемые run in sequence, и когда один из них возвращает 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

Проблема заключается в том, так как вы используете || оператора, как только одно условие возвращает ложь и отрицается логическая операция становится истинным там 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) 
{ 
... 
{