内部にいくつかの div ブロックを含む単一のフォームがあります。すべての div にはフィールドとボタンがあります。ボタンをクリックすると、その div(ボタンの親) だけを検証し、いくつかのフィールドをサーバーに非同期的に送信する必要があります。すべてが正常に機能しますが、検証は機能しません。JQuery 検証プラグインを使用しています。私が見るように、私はそのようなコードを書くことができません:
<script type="text/javascript">
//.......
// Validator for general information
var userProfileGeneralValidator = $("#form1").validate({
onkeyup: false,
onclick: false,
onfocusout: false,
rules: {
txtPrivateNumber: {
required: true
}
},
messages: {
txtPrivateNumber: {
required: "Required!"
}
},
errorPlacement: function (error, element) {
if (error.text() != "") {
}
},
success: function (lbl) {
}
});
// Validator for password information
var userPasswordValidator = $("#form1").validate({
onkeyup: false,
onclick: false,
onfocusout: false,
rules: {
txtOldPass: {
required: true,
minlength: 5
}
},
messages: {
txtOldPass: {
required: "Required!"
}
},
errorPlacement: function (error, element) {
if (error.text() != "") {
}
},
success: function (lbl) {
}
});
</script>
userPasswordValidator.form()
そして、あるボタンクリックと他のボタンクリックで呼び出しuserProfileGeneralValidator.form()
ます。私の目標を達成するためのトリックはありますか: jqueryで個別に検証するいくつかのフォームパーツ?
PS: 1 つの解決策が見つかりました: メイン フォームに複数のフォームを配置します。divごとに1つ。しかし、それは汚いと思います。
ソリューションを使用して更新します。最後に、この質問から回答を取得しましたが、次の変更を加えました。document.ready のどこかでフォーム全体
のメソッドを呼び出します。validate()
検証オプションとして、検証する必要があるすべてのコントロールのルールを追加します (それらはdivs
グループとしてネストされています)。Messages/errorPositions/Success ファイルで宣言します。ここで、検証するコントロールがネストされている div のボタンをクリックして作業します。そして、そのdivだけを検証するには、次を使用します:
var validator = $("#topUserProfile").validate(userProfileGeneralValidator);
// Validate and save general information
if (!validator.form()) {
return;
}
#topUserProfile
コントロールを含む div の名前はどこにありますか。userProfileGeneralValidator
検証用の追加オプション (メッセージ/位置/など) を保持する変数です。助けてくれた皆さん、ありがとう。