0

私は、ポストバックで配列を生成するためにブラケット付きの入力名を使用する jqote テンプレートからドキュメント オブジェクト モデルが読み込まれるプロジェクトに取り組んでいます。プロジェクトはこのように構築されているため、ポストバックの前にjquery sortableを使用して行をソートできます。

<form id="the_form">
    <input type="text" id="field1" name="options[]" /><br />
    <input type="text" id="field2" name="options[]" /><br />
    <input type="text" id="field3" name="options[]" /><br />
    <input type="submit" value="submit" />
</form>

私の問題は、jquery validate が括弧を含むフィールド名でうまく機能しないことです。検証することもあれば、1 つまたは 2 つのフィールドを見逃すこともあります。これが機能するはずであると述べている他の多くの投稿を読んでいますが、何か間違ったことをしているのか、それとも回避策があるのか​​ 疑問に思っています。

jQuery("#the_form").validate({
  rules: {
    "options[]": {
      required: true
    }
  }
});

jsFiddle を作成して、他の人が私が経験していることを確認できるようにしました。jsFiddle を実行してフォームで [送信] を選択すると、最初のフィールドのみが検証されることがすぐにわかりますが、フィールドをタブで移動すると、別の動作が表示されます。ありがとう!

http://jsfiddle.net/PV6j7/1/

4

3 に答える 3

1

それは、現在それらがすべて同じ名前であるためです。

動作させるには、異なる名前にする必要があります

于 2013-09-03T16:58:47.267 に答える
1

見積もり:

「...私の問題は、jquery validate が括弧を含むフィールド名で適切に機能しないことです。」

これは本当ですが、引用符で簡単に修正できます。ただし、ここでは「括弧」は実際には問題ではありません。

根本的な問題は、各フィールドに一意の名前がないとプラグインが正しく動作しないことです。これを回避する方法はありません。

メソッドを介してjQuery$.each()を使用してルールを割り当てること.rules('add')については、別の場所で説明されていますが、実行可能な回避策として反証されています。これは、要素の選択とルールの割り当てに根本的な問題がないためです。問題は、プラグインがname属性を使用して、検証中の要素を追跡することです。nameがすべて同じである場合、これは不可能です。

失敗した jQuery.each()デモ

于 2013-09-03T17:20:08.350 に答える
-1

これを試して:

  jQuery("#the_form").validate({
  rules: {
    "options": {
      required: true
    }
  }
});
于 2013-09-03T17:00:04.570 に答える