0

HTML フォームの入力を検証しようとしています。1 つのスクリプトを使用して、いくつかの類似した要素を持つさまざまなフォームを検証しようとしています。全体で約 15 の異なるフィールドがありますが、私は 3 つだけ入れています。以下は、すべての要素を含むフォームで機能しますが、特定のフィールドを持たないフォームでは失敗します。

if (form.name.value == ""){ // Check if blank
    alert( "\nEnter a name." );
    form.name.focus();
    return false; // Stop the form processing.
    } 

else if ( !/^\w{10}$/.test( form.phone.value )) { // Check for phone
    form.name.style.border=""
    alert( "\nEnter a valid phone number!" );
    form.phone.focus();
    return false; // Stop the form processing.
    } 

else{
 return true; // Submit!

これはすべてが存在する場合にのみ機能するため、存在する場合にのみ検証したいのです。検証を試みる前に要素をチェックするステートメントの下に検証をネストしようとしました。要素が存在しない場合は、次のステートメントに進む必要があります。

if (document.forms[0].name){ //does field exist?
    if (form.name.value === ""){
        alert( "\nEnter a name." );
        form.name.focus();
        return false; // Stop the form processing.
        }
    else{
        return true; //field ok move on.
        }
    }

else if (document.forms[0].phone){
    if ( !/^\w{10}$/.test( form.phone.value )) {  user
        form.name.style.border=""
        alert( "\nEnter a valid phone number!" );
        form.phone.focus();
        return false; // Stop the form processing.
        } 
    else{
        return true; //field ok move on.
        }
    }
else{
       return true; // Submit!
}

ヘルプヘルプをいただければ幸いです。

4

2 に答える 2

1

フォームを検証するだけなら、最近は JavaScript を書く必要はありません。html5 フォームを使用できます。この機能なしでブラウザーをサポートする必要がある場合でも、webshims libをページに配置して有効にすることができます。

于 2012-12-15T04:41:24.567 に答える
1

現在、(document.forms[0].name) が利用可能であることを確認しています。これが無効な場合は、(document.forms[0].phone) が true かどうかを確認し、次に ...どれも true ではなく、'else' に頼って true を返します。の使用はif else、この部分が失敗した場合にのみ、後で何かを気にすることを意味します。

あなたは試すことができます。

if (document.forms[0].name) {
    if ( !/^\w{10}$/.test( form.phone.value )) {  user
        form.name.style.border=""
        alert( "\nEnter a valid phone number!" );
        form.phone.focus();
        return false; // Stop the form processing.
    } 
}
if (document.forms[0].blah) {
    do stuff...
    if fail
        return false;
}
return true;

とにかく関数は true として返されるため、他の場所で return true を指定する必要はありません (また、これにより、プロセスが停止して停止したため、プロセスが停止しますreturned)。問題が発生した場合にプロセスを停止する唯一の理由..したがってreturn false;

于 2012-12-15T04:08:40.523 に答える