1

私はこれについて多くのことを検索しましたが、解決策は見つかりませんでした。JQuery 検証で、ファイル入力とドロップダウンという名前の複数の配列を検証したいと考えています。

<td> <input type="text" class="times" name="times[]" /> </td>
</tr>
<tr>
<td> <input type="text" class="times" name="times[]" /> </td>
</tr>
<tr>
<td> <input type="text" class="times" name="times[]" /> </td>
</tr>

次のように JQuery Validate Code を追加しました。

$("#formname").validate(
    {
    rules:{
        times:{required:true, digits:true}
    }}
    );

ただし、最初の入力を検証し、2番目または3番目の入力フィールドが入力されたかどうかにかかわらず、エラーメッセージを表示するだけです。

機能はこれに依存しているため、この「times[]」の名前を変更したくありません。JQuery validate を使用した検証のみが必要です。

これに利用できるトリックはありますか?

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

1

プラグインは、同じ名前のフィールドをうまく処理しません。私のアプリケーションでそれを解決した方法は次のとおりです。

すべての反復フィールドに個別の名前を付け、検証メソッドの名前をクラスに入れました。

<td> <input type="text" class="times required digits" name="times[0]" /> </td>
</tr>
<tr>
<td> <input type="text" class="times required digits" name="times[1]" /> </td>
</tr>
<tr>
<td> <input type="text" class="times required digits" name="times[2]" /> </td>
</tr>

次のようなコードを使用して、送信する前にインデックスを削除できます。

$("#formname").validate({
    ...
    submitHandler: function(form) {
        $(form).find(":input[name*='[']").each(function() {
            this.name = this.name.replace(/\[\d+\]/, '[]');
        }
        form.submit();
    }
});
于 2013-10-14T15:49:30.660 に答える