2014-01-18 2 views
0

나는 여기 아주 가깝다고 생각합니다.regex를 사용하여 여러 개의 전자 메일 유효성 검사. 첫 번째 유효성 검사 후 루프가 종료됩니다.

배열을 반복 할 때마다 반복 할 때마다 값이 유효한 전자 메일 주소인지 확인합니다.

문제는 루프가 false 또는 true 중 하나에 도달하면 루프가 종료된다는 것입니다. 루프를 종료하지 않고 배열을 반복하는 방법은 무엇입니까?

validateForm: function() { 

    var emails = $('#email-addresses').val(), 
     emailArray = emails.split(','); 

    for (var i = 0; i < emailArray.length; i++) { 
     if(! this.validateEmail(emailArray[i].trim())) { 
      return false; 
     } 
     return true; 
    }; 
}, 

validateEmail: function(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 

답변

2

그것은 당신이 여기에 수행 할 작업에 따라 달라집니다. 모든 수표에 대해 결과를 보관하려면 lincb 응답을보십시오. 모든 이메일이 유효한지 여부에 대해 true/false를 원하면 다음을 수행하십시오.

validateForm: function() { 

    var emails = $('#email-addresses').val(), 
     emailArray = emails.split(','); 
    var isValid = true; 
    for (var i = 0; i < emailArray.length && isValid == true; i++) { 
     if(! this.validateEmail(emailArray[i].trim())) { 
      isValid = false; 
     } 
    }; 
    return isValid; 
}, 
0

자바 스크립트에서는 루프에 관계없이 함수가 종료됩니다. 다음은 가능한 수정은 다음과 같습니다

validateForm: function() { 

    var emails = $('#email-addresses').val(), 
     emailArray = emails.split(','); 
    var returns = new Array(); 

    for (var i = 0; i < emailArray.length; i++) { 
     if(! this.validateEmail(emailArray[i].trim())) { 
      returns[i] = false; 
     } 
     returns[i] = true; 
    } 
    return returns; 
}, 
관련 문제