0

Jquery Validation プラグインで作成したカスタム メソッドを再度追加する際に問題が発生しています。私のフォームが基本的に何をするかを示すために、jsfiddle に簡単な例を投稿しました... ユーザーには、テキスト フィールドから学校を選択するフォームがあります (実際にはオートコンプリート)。フォームにはカスタム ルールがあり、school_id は .blur イベントを介して設定されます (実際には、オートコンプリートによって school_id が設定されますが、単純な例ではこれで十分です)。

これで、通常のドロップダウンから学校を選択するように切り替えることができます/それが希望する場合は (リンクをクリックして)。そこで、school_id Validate ルールを削除し、ドロップダウンの Validation ルールを追加します。しかし、ユーザーが古いものに戻った場合、カスタム オートコンプリート ルールを再度追加することはできないようです。

私が間抜けなコードの特定の部分はここにあります:

$("#school_autocomplete").rules("add", {
  school_id_required: "",
  messages: {
    required: "* Please type and pick a school"
  }
});  

ここに簡単な機能の例があります:
http://jsfiddle.net/armyofda12mnkeys/4jsgQ/6/

そこに移動してみて^、すぐに [送信] をクリックしてください (エラーが表示されますが、これは正しいです)。次に、[Show DropDown] をクリックし、[Submit] をクリックします (新しく追加されたエラーが表示されますが、これは正しいです)。[Show Text (Autocomplete)] をクリックし、[Submit] をクリックします。「警告: school_autocomplete に対して定義されたメッセージがありません」というメッセージが表示されるようになりましたが、これは正しくありません。

通常、そのschool_id_required: ""行には、 required: trueまたは"regex": "^some.+regex$"のようなものがあると思います...しかし、カスタムルールの場合、機能していないようですテストする値として ""、false/true、"blah" を渡すと正しく。誰かが school_id_required: ["someParam"]のようなものを使用した例を見たので、配列で渡すために偽の値を与えてみましたが、同様に役に立ちませんでした。

助けてくれてありがとう!

4

1 に答える 1

1

これを試してもらえますか, これは私にとってはうまくいきます. 設定オブジェクトを使用してから, 新しいルールとメッセージを割り当てます :)

var settings = $("#school_autocomplete").validate().settings;

$.extend(settings, {
    rules: _Rules,
    messages: _Messages
});

var validated = $('#school_autocomplete').valid();

これで頑張ってください。

于 2012-04-24T16:53:35.340 に答える