2013-09-12 4 views
0

Я пытаюсь выполнить проверку формы JavaScript, и для этого мне нужно вызвать несколько функций. Один для проверки электронной почты, один для пароля (который пока является только двумя, которые, кажется, работают), а другие для пола, класса, имени и фамилии.Вызов нескольких функций на форме submit?

Вот мой код JavaScript:

function emailmatch() { 
    var emailone = document.forms['input']['email'].value; 
    var emailtwo = document.forms['input']['email1bID'].value; 
    var passwordone = document.forms['input']['password'].value; 
    var passwordtwo = document.forms['input']['password1bID'].value; 

    if (emailone != emailtwo) { 
    alert ("Emails do not match!"); 
    document.forms['input']['email'].value = ''; 
    document.forms['input']['email1bID'].value = ''; 
    return false; 
    } 

    else if (passwordone != passwordtwo) { 
    alert ("Passwords do not match!"); 
    document.forms['input']['password'].value = ''; 
    document.forms['input']['password1bID'].value = ''; 
    return false; 
    } 

    return true; 
} 

function checkFirstname() { 
    var firstname = document.forms['input']['firstname'].value; 
    if (firstname == null) { return false; } 
    return true; 
} 

function checkLastname() { 
    var lastname = document.forms['input']['lastname'].value; 
    if (lastname == null) { return false; } 
    return true; 
} 

function checkGender() { 
    var gender = document.forms['input']['gender'].value; 
    if (gender == null) { return false; } 
    return true; 
} 

function validateform() { 
    var validation = true; 
    if ((emailmatch() && checkFirstname() && checkLastname && checkgender()) == true) return validation; 
} 

А то вот HTML форма:

<form name="input" id="input" onSubmit="return validateform()" method="GET" action="code.php"> 
    <tr><td>First name:</td><td> <input type="text" name="firstname" value=""></td></tr> <br /> 
    <tr><td>Last name:</td><td> <input type="text" name="lastname" value=""></td></tr> <br /> 
    <tr><td>Gender:</td><td> <input type="radio" name="gender" id="gender" value="male">Male <input type="radio" name="gender" value="female">Female</td></tr> <br /> 
    <tr><td>Grade:</td><td> <input type="radio" name="grade" value="9"> 9 <input type="radio" name="grade" value="10"> 10 <input type="radio" name="grade" value="11"> 11 <input type="radio" name="grade" value="12"> 12<br /> </td></tr> 
    <tr><td>Email:</td><td> <input type="text" name="email" id="email" value=""></td></tr> <br /> 
    <tr><td>Verify Email:</td><td> <input type="text" name="email1b" id="email1bID" value=""></td></tr> <br /> 
    <tr><td>Password:</td><td> <input type="password" name="password" id="password" value=""></td></tr> <br /> 
    <tr><td>Verify Password:</td><td> <input type="password" name="password1b" id="password1bID" value=""></td></tr> <br /> 
    <tr><td colspan="2"><center><input type="submit" value="Submit"></center></td></tr> 
</form> 

Так в целом я создал все функции и даже создал функцию, чтобы назвать их всех на submit, хотя на самом деле работают только электронные письма и пароль. Он вызывает код, который вводит его в базу данных (которая также работает), так что это не проблема. Где коды проверки неверны?

+0

Вы не сказали, что ошибка в том, что вы испытываете. Пожалуйста, укажите более подробную информацию о том, что не работает. – SuperDuperApps

+1

Это похоже на простую задачу, которую можно отладить с помощью firebug. – Huangism

+0

Не сравнивайте значения с 'null'. Сравните с '" "' –

ответ

0

Потому что вы никогда не возвращаете ложь!

function validateform() 
    { var validation = true; <-- set to true 
     if ((emailmatch() && checkFirstname() && checkLastname && checkgender())== true) 
    return validation; <--- returns true 
    <-- if false you do not return anything 
    } 

Либо добавьте возврат false, либо измените его на возврат со всеми чеками.

function validateform() { 
     return emailmatch() && checkFirstname() && checkLastname && checkgender(); 
    } 

После того как вы получите это прямо, вы должны понимать, что пустая строка не равна нулю.

0

Используйте событие, нажмите на кнопку <input type="button" value="Submit" onclick="validateform();"/>

и отправить форму с помощью JavaScript.

function validateform() 
{ 
    var validation = true; 
    if((emailmatch() && checkFirstname() && checkLastname && checkGender())== true) 
    document.forms['input'].submit(); 
} 

<form name="input" id="input" method="GET" action="code.php"> 
<tr><td>First name:</td><td> <input type="text" name="firstname" value=""></td></tr> <br /> 
<tr><td>Last name:</td><td> <input type="text" name="lastname" value=""></td></tr> <br /> 
<tr><td>Gender:</td><td> <input type="radio" name="gender" id="gender" value="male">Male <input type="radio" name="gender" value="female">Female</td></tr> <br /> 
<tr><td>Grade:</td><td> <input type="radio" name="grade" value="9"> 9 <input type="radio" name="grade" value="10"> 10 <input type="radio" name="grade" value="11"> 11 <input type="radio" name="grade" value="12"> 12<br /> </td></tr> 
<tr><td>Email:</td><td> <input type="text" name="email" id="email" value=""></td></tr> <br /> 
<tr><td>Verify Email:</td><td> <input type="text" name="email1b" id="email1bID" value=""></td></tr> <br /> 
<tr><td>Password:</td><td> <input type="password" name="password" id="password" value=""></td></tr> <br /> 
<tr><td>Verify Password:</td><td> <input type="password" name="password1b" id="password1bID" value=""></td></tr> <br /> 

также посмотреть на вашу функцию: checkGender(), в заявлении, если вы звоните checkgender()

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