2017-01-15 18 views
1

Я пытался использовать следующий код javascript для проверки нескольких полей в форме контакта. Проверка выполняется для первого проверяемого элемента, поля имени, но не второго поля электронной почты. Если поле имени заполнено, проверка, похоже, пропускает проверку поля электронной почты, когда она пуста, и форма отправляется.Обычная проверка формы 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> 

Спасибо

ответ

1

Вы, кажется, использует empty функцию в ваших if статей, которые, кажется, не определены ни его является частью стандартных функций 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.

Но когда имя истинно, оператор if не будет перемещаться в else условий, потому что он уже удовлетворен. Поэтому, если вы хотите проверить оба, вы либо разделяете операторы, либо делаете 5 отдельных ifs, делаете это оператором switch или вы создаете одну длинную проверку. Например:

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

Последние всегда возвращает истину, если одно из заявлений, если срабатывает.

И см. Ниже ответ о пустой() вещи. Я не знаю, что это такое, и если это что-то испортит.

Смежные вопросы