jquery.validateで使用する場合、ライブクエリは常にライブではありません

StackOverflow https://stackoverflow.com/questions/3890568

質問

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

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

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

これがライブリンクです: http://mrgsp.md:8080/awesome/personクリックして[保存]をクリックして検証メッセージを取得し、[保存]をもう一度クリックします。

役に立ちましたか?

解決

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

アップデート

私は他のコメントを読んで、あなたがxvalを使用しているのを見て、jquery.validateでも少し読んでください。 jquery.validate riedate in fit with many eventsやイベントハンドラーへの登録は乱雑です。 LiveQueryが初めて機能する理由は、ラベルが以前に存在しない場合に生成されるため、作成イベントが機能を実行するようになったためです。この後、ラベルが隠されている/表示されるので、再びトリガーされません。検証のショーラベル関数はクラスをリセットします。

理想的な場所は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: "field-validation-error ui-state-error ui-corner-all",

これは、XVALが検証プラグインのセットアップを行っているためです。

他のヒント

エラークラスオプションだけではありませんか?

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

または多分:

$.validator.setDefaults({ 
   errorClass: "field-validation-error ui-state-error ui-corner-all"
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top