2017-01-15 17 views
1

私は以下のjavascriptコードを使用して、連絡先フォームのいくつかのフィールドを検証しようとしています。検証は、検証される最初のアイテム、名前フィールド(2番目ではない)、電子メールフィールドで機能します。名前フィールドが入力されている場合は、空白でフォームが送信されたときに電子メールフィールドのチェックをスキップするように見えます。ここで一般的なjavascriptフォームの検証が機能しない

function validateForm() 
{ 

    var n = document.contact.name.value; 
    n = n.trim(); 

    var ema = document.contact.email.value; 
    ema = ema.trim(); 

    //Check if the name is missing 
    if (n == null || n == "" || empty(n)) 
    { 
     alert("Please enter your name."); 
     document.contact.name.focus(); 
     return false; 
    } 

    //Check if the email is missing 
    else if (ema == null || ema == "" || empty(ema)) 
    { 
     alert("Please enter your email address."); 
     document.contact.email.focus(); 
     return false; 
    } 
    else 
    { 
     return(true); 
    } 
} 

はコンタクトフォーム上のHTMLです:

<FORM name="contact" METHOD="POST" ACTION="thankyou.php" onsubmit="return validateForm()"> 

    <input type="checkbox" name="newsletter" value="YES" width="30" height="30"> Check the box to subscribe to Herb's Newsletter 

    <input type="text" class="form-control" size=20 name="name" placeholder="Your name" /> 

    <input type="email" class="form-control" name="email" placeholder="Email Address" /> 

    <input class="btn btn-theme btn-subscribe" type="submit" value="Send" /> 

</form> 

はあなたが定義されていないようごif句でempty機能を使用しているように見えるまたそれあなたの

答えて

1

ありがとうございました標準のjavascript関数の一部です。それを取り除くことを試みなさい:

function validateForm() { 
    var n = document.contact.name.value; 
    n = n.trim(); 

    var ema = document.contact.email.value; 
    ema = ema.trim(); 

    //Check if the name is missing 
    if (n == null || n == "") { 
     alert("Please enter your name."); 
     document.contact.name.focus(); 
     return false; 
    } else if (ema == null || ema == "") { 
     //Check if the email is missing 
     alert("Please enter your email address."); 
     document.contact.email.focus(); 
     return false; 
    } else { 
     return true; 
    } 
} 

そしてここにlive demoがある。

0

コードでは、else if文を使用します。

コードは基本的には: check name -> if that is falsy check email -> if that is falsy move into else conditionです。

ただし、名前がtrueの場合、ifステートメントはすでに満足しているため、elseの条件には移動しません。したがって、両方をチェックしたい場合は、ステートメントを分離して5つのif文を作成するか、switchステートメントにするか、長いチェックを1つ作成します。たとえば、次のように

if ((n == null || n == "" || empty(n)) || (ema == null || ema == "" || empty(ema))) 
{ 
    alert("Something is missing"); 
    return false; 
} 
else 
{ 
    return(true); 
} 

か、複数のIFSを使用します。

function validateForm() { 

var n = document.contact.name.value; 
n = n.trim(); 

var ema = document.contact.email.value; 
ema = ema.trim(); 

//Check if the name is missing 
if (n == null || n == "" || empty(n)) 
{ 
    alert("Please enter your name."); 
    document.contact.name.focus(); 
    return false; 
} 

//Check if the email is missing 
if (ema == null || ema == "" || empty(ema)) 
{ 
    alert("Please enter your email address."); 
    document.contact.email.focus(); 
    return false; 
} 
return(true); 
} 

if文の一つがトリガーされない限り、後者は常にtrueを返しますが。

そしてempty()については以下の回答を参照してください。私はそれが何であるか、そしてそれが何かをぶち壊すかどうかわかりません。

関連する問題