2012-02-20 9 views
1

jqueryの新機能で、3つのフォームを持つページに検証プラグインを実装しようとしました。最初のフォームを送信すると正常に動作します。ユーザー名とパスワードのみを必要とするページ(#loginForm)に2番目のフォームを送信しようとすると、電子メールアドレスを探しているフォームに検証エラーが表示されます。フォーム -1つのページに複数のフォームを検証する

<div class="newsTitle">REGISTER HERE</div> 
<form id="registerForm" action="register.php" method="post" name="registerForm"> 
<b>Enter your email address</b><br> 
<input type="text" id="emailrf" name="emailrf" size="30" maxlength="64"><p> 
<b>Full Name</b><br> 
<input type="text" id="full_namerf" name="full_namerf" size="30" maxlength="64"><p> 
Choose Username <span class="cap">(4-24 characters)</span><br> 
<input type="text" id="usernamerf" name="usernamerf" size="24" maxlength="24"><p> 
Choose Password <span class="cap">(6-12 characters)</span><br> 
<input type="text" id="passwordrf" name="passwordrf" size="12" maxlength="12"><p> 
<input type="hidden" name="formStatusregister" value="register">    
<input type="submit" id="rForm" class="subMit" name="srForm" value="REGISTER"> 
</form><p><br> 

<div class="newsTitle">LOG IN PLEASE</div> 
<form id="loginForm" action="register.php" method="post" name="loginForm"> 
<b class="red">username</b><br> 
<input type="text" id="usernameli" name="usernameli" size="30"><p> 
<b class="red">password</b><br> 
<input type="password" id="passwordli" name="passwordli" size="30"><p> 
<input type="checkbox" name="remember" value="yes"> Remember Me 
<input type="hidden" name="formStatuslogin" value="submitted"><br>    
<input type="submit" id="liForm" class="subMit" name="liForm" value="LOG-IN"> 
</form> 

<p><br> 
<div class="newsTitle">RETRIEVE YOUR LOG-IN INFO</div> 
<form id="lostForm" action="register.php" name="lostForm" method="post"> 
Enter your email address and click SUBMIT.<p> 
<input type="hidden" name="forgot" value="yes"> 
<b>email address</b><br> 
<input type="text" id="emaill" name="emaill" size="30"><p> 
<input type="hidden" name="referrer" value=""> 
<input type="hidden" name="formStatuslost" value="forgot"> 
<input type="submit" id="lForm" name="lForm" value="SUBMIT"> 
</form> 

とJSコード:2番目と3番目のフォームが入れ子になっているが、それらはじゃないかのように

$(document).ready(
function() {  
    $('#lostForm').validate({ 
     rules: { 
      emaill: { 
      required:true, 
      email:true 
      }  
     } 
}); 

$('#loginForm').validate({ 
rules: {   
    usernameli:{ 
     required:true, 
     rangelength:[6,24] 
     },   
     passwordli:{ 
     required:true 
     } 

}//--end rules 

}); //--- END loginForm validate() ---// 

$('#registerForm').validate({ 
rules: { 
    emailrf: { 
    required:true, 
    email:true, 
      remote:{ 
       url:'check_email.php', 
       type:'post' 
       } 
     }, 
     full_namerf: { 
     required:true, 
     letters:true 
     }, 
     usernamerf:{ 
     required:true, 
     rangelength:[6,24], 
     remote:{ 
       url:'check_user.php', 
       type:'post' 
       }   
     }, 

     passwordrf:{ 
     required:true, 
     rangelength:[6,12] 
     } 

}, //--end rules 
messages:{ 
emailrf: { 
remote:"This email is already registered" 
}, 
usernamerf: { 
remote:"Already in use - choose another" 
} 


} //end messages 
}); //--- END registerForm validate() ---// 

}); //--END ready---// 

それは動作します。何が問題なのでしょうか?

+2

同じIDを持つ複数の要素は、予測できない壊れたDOMを生成します。 jQueryがそのようなページで何かをする方法はありません。トラブルシューティングを行う前に、HTMLを検証する習慣をつけてください。 :) – bzlm

答えて

2

複数の入力で同じID属性を使用しています。

各IDは、ページ上で一意である必要があります。私はあなたの変更されたコードを撮影しにそれを入れている:jQueryのどの

編集された要素を決定するのに役立つはずです

<input type="text" id="registerformusername" name="username" size="24" value=""maxlength="24"><p> 

:例えば、それは、よりユニークにするために、フォームの名前とIDを前に付けてみてくださいシンプルなHTMLページ。これはうまくいくようです。検証エラーは、そのフォームに属するフォームでのみ発生し、そのフォームの送信ボタンがクリックされたときにのみ表示されます。コード:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script src="jquery.validate.js"></script> 
</head> 
<body> 

<p><br> 
<div class="newsTitle">REGISTER HERE</div> 
<form id="registerForm" action="register.php" method="post" name="registerForm"> 
<b>Enter your email address</b><br> 
<input type="text" id="emailrf" name="emailrf" size="30" maxlength="64"><p> 
<b>Full Name</b><br> 
<input type="text" id="full_namerf" name="full_namerf" size="30" maxlength="64"><p> 
Choose Username <span class="cap">(4-24 characters)</span><br> 
<input type="text" id="usernamerf" name="usernamerf" size="24" maxlength="24"><p> 
Choose Password <span class="cap">(6-12 characters)</span><br> 

<input type="text" id="passwordrf" name="passwordrf" size="12" maxlength="12"><p> 
<input type="hidden" name="formStatusregister" value="register">    
<input type="submit" id="rForm" class="subMit" name="srForm" value="REGISTER"> 
</form><p><br> 

<div class="newsTitle">LOG IN PLEASE</div> 
<form id="loginForm" action="register.php" method="post" name="loginForm"> 
<b class="red">username</b><br> 
<input type="text" id="usernameli" name="usernameli" size="30"><p> 
<b class="red">password</b><br> 
<input type="password" id="passwordli" name="passwordli" size="30"><p> 
<input type="checkbox" name="remember" value="yes"> Remember Me 
<input type="hidden" name="formStatuslogin" value="submitted"><br>    

<input type="submit" id="liForm" class="subMit" name="liForm" value="LOG-IN"> 
</form> 

<p><br> 
<div class="newsTitle">RETRIEVE YOUR LOG-IN INFO</div> 
<form id="lostForm" action="register.php" name="lostForm" method="post"> 
Enter your email address and click SUBMIT.<p> 
<input type="hidden" name="forgot" value="yes"> 
<b>email address</b><br> 
<input type="text" id="emaill" name="emaill" size="30"><p> 
<input type="hidden" name="referrer" value=""> 
<input type="hidden" name="formStatuslost" value="forgot"> 
<input type="submit" id="lForm" name="lForm" value="SUBMIT"> 
</form> 

<script> 


$(document).ready(
function() {  
$('#lostForm').validate({ 
rules: { 
    emaill: { 
    required:true, 
    email:true 
    }  
} 
}); 

$('#loginForm').validate({ 
rules: {   
usernameli:{ 
required:true, 
rangelength:[6,24] 
},   
passwordli:{ 
required:true 
} 

}//--end rules 

}); //--- END loginForm validate() ---// 

$('#registerForm').validate({ 
rules: { 
emailrf: { 
required:true, 
email:true, 
    remote:{ 
     url:'check_email.php', 
     type:'post' 
     } 
}, 
full_namerf: { 
required:true, 
letters:true 
}, 
usernamerf:{ 
required:true, 
rangelength:[6,24], 
remote:{ 
     url:'check_user.php', 
     type:'post' 
     }   
}, 

    passwordrf:{ 
    required:true, 
    rangelength:[6,12] 
    } 

}, //--end rules 
messages:{ 
emailrf: { 
remote:"This email is already registered" 
}, 
usernamerf: { 
remote:"Already in use - choose another" 
} 


} //end messages 
}); //--- END registerForm validate() ---// 

}); //--END ready---// 
</script> 
</body></html> 
+0

私は彼らに一意のIDを与えていましたが、何も働いていませんでした。私は何度もアドバイスに基づいてそれに戻りましたが、うまくいきません。フォームはiputや間違った入力を伴わずに送信されます。 – bp163

+0

あなたは今使っているコードをユニークなIDで掲示できますか? – Roland

+0

IDを持つ編集済みコードが上記に掲載されています。ありがとう – bp163

関連する問題