より大きなjQuery検証済みフォームの一部として、ボタンを押すだけで検証が必要な入力がいくつかあります。たとえば、アイテムをリストに入力します。
<form class="validate">
// ......
validated form elements on submit
// ......
<select multiple="multiple" id="itemList" size="5"><select>
<input type="text" id="newItem" name="newItem"/>
<button type="button" id="addItem">add</button>
// ......
validated form elements on submit
// ......
<button type="submit">Submit Form</button>
</form>
<script>
$(document).on("click", "#addItem", function(e){
if( $("form.validate").validate({}).element("#newItem") ){
//Code to add valid item to the list
}
});
</script>
ルールを割り当てる方法として入力のクラスを使用したくありません。これは、メイン フォームの一部として検証されることを意味しますが、フォーム $([form]).validate({ で検証を呼び出す場合rules..}).element([element]) それらは無視されます。
これを機能させる唯一の方法は、検証の前に rules( "add", rules ) を使用し、その後に rules( "remove", rules ) を使用することでした。
<script>
$(document).on("click", "#addItem", function(e){
$("#newItem").rules("add", {
required: true,
minlength: 2,
messages: {
required: "Required input",
minlength: jQuery.format("Please, at least {0} characters are necessary")
}
});
$("form.validate").validate().element("#newItem");
$("#newItem").rules("remove");
});
</script>
しかし、これは非常に洗練されていないように見えるので、誰かが私が間違っている場所を教えてくれれば、それは素晴らしいことです:)