2013-06-27 3 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에 추가하는 것이 더 좋을 수도 있고, 처음의 if 변수가 비어 있지 않은지 검사한다. –

답변

1

하나 개의 조건이 false를 반환하고 논리 연산 추가 기능을 실행하지 않습니다 자바 스크립트 엔진이 참이 부정되는대로 즉시, || 연산자를 사용하고 있기 때문에 문제는 .

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) 
{ 
... 
{ 
관련 문제