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';
    }
}

最初の IF ステートメントは機能し、フィールドが空の場合はメッセージを表示しますが、ELSE IF は何らかの理由で表示されません...何が間違っていますか?

4

2 に答える 2

2

phoneValue正規表現を見て、テストのロジックを反転する必要があると思います。次のように、正規表現とelse if一致しない場合に句を実行する必要があります。phoneValue

else if (phoneClass.test(el.className) && !phoneValue.test(el.value)) {
于 2012-05-16T20:14:37.823 に答える
1

phoneValue.test(el.value)に解決されfalseます。else ifそれが発砲しない理由です。

于 2012-05-16T20:13:12.970 に答える