1

以下の jQuery 検証コードを含む単純なフォームを検討してください。検証がこのように機能しないため、どういうわけか(まだ)ルールの構文に誤りがあります(このトピックに関するstackoverflowのいくつかのサイトをチェックしました)。配列を使用してルールを適切に記述する方法は?

助けてください。

コード:

<form id="myForm" name="myForm" action="" method="post" autocomplete="on">
<label class="field2" for="productname[0]"> Product name 1 </label> <input id="productname[0]" type="text" name="productname[0]"> <br>
<label class="field2" for="productname[1]"> Product name 2 </label> <input id="productname[1]" type="text" name="productname[1]"> <br>
<input type="submit" name="submitForm" value="Submit Form">

<script src="js/jquery-1.10.1.min.js"></script>
<script src="js/jquery.validate.js"></script>

<script>
$(function() {

    $("#myForm").validate({

    rules: {

            'productname[]': {
                required:true,
                minlength: 2,
                maxlength: 30,
            }

            } //rules
    }); //validate()

}); //function
</script>
</body>
4

2 に答える 2

2

バックエンドがどのように見えるかはわかりませんが、フィールド [0] と [1] に名前を付ける必要はありません

<label class="field2" for="productname_1"> Product name 1 </label> <input id="productname_1" type="text" name="productname[]"> <br>
<label class="field2" for="productname_2"> Product name 2 </label> <input id="productname_2" type="text" name="productname[]"> <br>

上記で十分であり、検証で機能します。ほとんどの場合、サーバーはポスト クエリ文字列を配列に変換します。

于 2013-07-19T07:42:12.810 に答える
0

HTML マークアップに問題があるようです。変更してみてください:

<label class="field2" for="productname[0]"> Product name 1 </label> <input id="productname[0]" type="text" name="productname[]"> <br />
<label class="field2" for="productname[1]"> Product name 2 </label> <input id="productname[1]" type="text" name="productname[]"> <br />
于 2013-07-19T07:42:22.980 に答える