1

より大きな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>

しかし、これは非常に洗練されていないように見えるので、誰かが私が間違っている場所を教えてくれれば、それは素晴らしいことです:)

4

1 に答える 1

0
<script>
    $(document).on("click", "#addItem", function(e){
       var _validateSingleField=$('form.validate').validate().element('#newItem');

       if(_validateSingleField){
           //Code to add valid item to the list
       }
   });
</script>
于 2015-05-24T18:29:46.460 に答える