0

JavaScript フォームの検証を行おうとしています。これを行うには、複数の関数を呼び出す必要があります。1 つはメールを検証するため、もう 1 つはパスワードを検証するため (これまでのところ機能しているように見えるのは 2 つだけです)、もう 1 つは性別、学年、姓、名を検証するためです。

ここに私の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>

全体として、すべての関数を作成し、送信時にそれらすべてを呼び出す関数も作成しましたが、実際に機能しているのは電子メールとパスワードだけです。それをデータベースに入力するコードを呼び出します(これも機能しています)ので、それは問題ではありません。検証コードはどこで間違っていますか?

4

2 に答える 2

0

false を返すことはないからです。

    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
   }

return false を追加するか、すべてのチェックを伴う return に変更してください。

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

それを理解した後、空の文字列は null ではないことに気付く必要があります。

于 2013-09-12T20:39:48.613 に答える
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()を呼び出すifステートメントで

于 2013-09-12T20:52:30.083 に答える