jquery.validateで使用する場合、ライブクエリは常にライブではありません
-
28-09-2019 - |
質問
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"
});
所属していません StackOverflow