1

jquerylive プラグインを使用して、追加の css クラスを .field-validation-error クラスに次のように追加します。

$(".field-validation-error").livequery(function () { 
    $(this).addClass('ui-state-error ui-corner-all'); 
});

jquery.validate によって生成されたこのクラスでいくつかのスパンを取得すると、上記のコードは機能しますが、2 回目の検証では機能しません。

ライブ リンクは次のとおりです: http://mrgsp.md:8080/awesome/person [保存] をクリックしてから [作成] をクリックして検証メッセージを取得し、[保存] をもう一度クリックします。

4

2 に答える 2

1

関数を validate() をトリガーするのと同じイベントにフックしてみませんか?

アップデート

他のコメントを読んだところ、xVal を使用していることがわかりました。jQuery.Validate についても少し読んでください。jQuery.Validate は多くのイベントと結びついており、イベント ハンドラーへの登録は面倒です。livequeryが初めて機能する理由は、ラベルが以前に存在しない場合に生成され、作成イベントが関数を実行するようになるためです. validate の showLabel 関数はクラスをリセットします。

理想的な場所は、ファイルに 1 つの小さな変更を加えることによって、xVal にありxVal.jquery.validate.jsます。_ensureFormIsMarkedForValidationメソッドには次の行があります。

ensureFormIsMarkedForValidation: function(formElement, options) {
        if (!formElement.data("isMarkedForValidation")) {
            formElement.data("isMarkedForValidation", true);
            var validationOptions = {
                errorClass: "field-validation-error",

errorClass を次のように変更するだけです。

errorClass: "field-validation-error ui-state-error ui-corner-all",

これは、xVal が検証プラグインの設定を行っているためです。

于 2010-10-22T13:49:09.643 に答える
1

errorClass オプションだけではできませんか?

$(".selector").validate({
   errorClass: "field-validation-error ui-state-error ui-corner-all"
})

または多分:

$.validator.setDefaults({ 
   errorClass: "field-validation-error ui-state-error ui-corner-all"
});
于 2010-10-12T10:14:27.760 に答える