jQuery 検証プラグインを使用してモバイル フォームを検証しようとしましたが、あまり成功しませんでした。
フォームを含む最初にアクセスしたページは正常に検証されているようです。後続のページは、最初のページの検証用に存在したフィールドと同じフィールドを持たない限り、検証されません。
たとえば、最初にアクセスするページはログイン ページです。メールアドレスとパスワードの2つのフィールドがあります。
コードは次のとおりです。
<body>
<div id="Login" data-role="page">
<script type="text/javascript">
$(document).on('pageinit pageshow', 'div:jqmData(role="page"), div:jqmData(role="dialog")', function(){
if($("form.validate").length > 0){
$("form.validate").validate({
rules: {
email_address: {
required: true,
email: true
},
password: "required"
}
});
}
});
</script>
<form name="login" method="post" class="validate">
<label class="inputLabel" for="login-email-address">Email Address:</label>
<input type="email" name="email_address" size="18" id="login-email-address" />
<label class="inputLabel" for="login-password">Password:</label>
<input type="password" name="password" size="18" id="login-password" />
<input type="submit" value="Log In" data-icon="lock" data-mini="true" alt="Log In" title=" Log In " />
</form>
</div>
</body>
これは、送信ボタンを押したときに検証されます。ログインページからボタンを押してアカウント作成ページに移動すると、名前、姓、電子メールアドレス、パスワードの4つのフィールドがあり、電子メールアドレスとパスワードのみが検証されます。
アカウントの作成ページは次のようになります。
<body>
<div id="CreateAccount" data-role="page">
<script type="text/javascript">
$(document).on('pageinit pageshow', 'div:jqmData(role="page"), div:jqmData(role="dialog")', function(){
if($("form.validate").length > 0){
$("form.validate").validate({
rules: {
firstname: {
required: true,
minlength: 2
},
lastname: {
required: true,
minlength: 2
},
email_address: {
required: true,
email: true
},
password: "required"
}
});
}
});
</script>
<form name="create_account" method="post" class="validate">
<label class="inputLabel" for="create-account-firstname">First Name:</label>
<input type="text" name="firstname" size = "41" maxlength= "96" id="create-account-firstname" />
<label class="inputLabel" for="create-account-lastname">Last Name:</label>
<input type="text" name="lastname" size = "41" maxlength= "96" id="create-account-lastname" />
<label class="inputLabel" for="create-account-email-address">Email Address:</label>
<input type="email" name="email_address" size="18" id="create-account-email-address" />
<label class="inputLabel" for="create-account-password">Password:</label>
<input type="password" name="password" size="18" id="create-account-password" />
<input type="submit" value="Submit" data-icon="lock" data-mini="true" alt="Submit" title=" Submit " />
</form>
</div>
</body>
このページの送信ボタンをクリックすると、電子メール アドレスとパスワードのみが検証されます。これは、アカウントの作成ページではなく、ログイン ページからまだ検証ルールを実行しているためだと思いますか? ブラウザーの更新を押すと、送信ボタンの 4 つのフィールドすべてが検証されます。
フォームを正しく検証するにはどうすればよいですか?