2012-05-16 3 views
1

가 나는 양식 유효성 검사를하고 내 코드에 문제가 오전 경우 다른 :경우 ... 자바 스크립트

var reValue = /^\s*$/;  
var phoneClass = /(^|\s)phoneValidate(\s|$)/;    
var phoneValue = 
    /^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$/; 

for (var i=0; i < iLen; i++) { 
    el = allElements[i]; 

    if(phoneClass.test(el.className) && reValue.test(el.value)){ 
     // The field is empty. 
     aMessages += 'Please enter a phone number in: '+ el.name +'.\n'; 
    } 
    else if (phoneClass.test(el.className) && phoneValue.test(el.value)) { 
     // The field is not a valid phone number 
     // Advise user to fix it 
     aMessages += 'Please enter a valid phone number in: '+ el.name +'.\n'; 
    } 
} 

문을 작동하는 경우 첫 번째와 필드가 비어있는 경우 마사지를 표시하지만 ELSE를위한 IF 어떤 이유가 ... 내가 뭘 잘못하고 있니?

+0

이를 – Radi

+1

당신은 * 코드 * 마사지에 필요 조금 (미안해, 저항 할 수 없었다!) – bfavaretto

+4

@DavidWolever이 경우 어떻게 그 주석이 적합합니까? ...? OP는 SSCE를 만들었으며 분명한 질문을하였습니다. 질문을 게시하기 전에 그가 할 수있는 다른 일은 무엇입니까? –

답변

2

당신의 정규식을 보면, 당신은 phoneValue 테스트의 논리를 뒤집을 필요가 있다고 생각합니다. 당신이이 같은 phoneValue 정규식 일치하지 않을 때 실행하도록 else if 절을 원하는 '재평가', 'phoneValue'와 'phoneClass가'...

else if (phoneClass.test(el.className) && !phoneValue.test(el.value)) { 
+0

도움 주셔서 대단히 감사합니다! 나는 무슨 일이 일어나고 있는지 알지 못하는 지난 2 ~ 3 시간 동안 벽에 머리를 치고 있었다. 고마워! – Radi

1

phoneValue.test(el.value)false으로 변환됩니다. 그렇기 때문에 else if이 실행되지 않습니다.