0

前のフィールドが入力されるまで、スタイルのデフォルトが「display: none」である div があり、選択が必要なドロップダウン リストが含まれています。

この div が表示される前にページが送信されると、検証エラーがページの左半分に表示されます。

もちろん、これは機能上の問題ではありませんが、検証エンジンに非表示の要素を無視させる方法があるかどうか疑問に思っていました。

これまでのところ、作成者のブログで指摘されているように、class="validate[optional: Special]" を試しました: 提案どおりに機能しないようです。

<div id="container" style="display: none;">
   ...
   <select id="mapLocation" onchange="moveMapToCenter();" class="validate[optional: Special]" />
   ...
</div> 

jquery.validate "ignore" も使用してみました:

$(document).ready(function() {
   $("#aspnetForm").validationEngine({
      ignore: ":hidden"
      success: false,
      failure: function() {}
   })
});

これは私の単純な見落としかもしれません。ありがとう。

4

2 に答える 2

1

要素を非表示および表示する関数を使用して、validation[required] クラス属性を追加および削除することで、これを解決しました。

function showContainer() {
   ...
   $("#mapLocation").addClass("validate[required]");
   ...
}
function hideContainer() {
   ...
   $("#mapLocation").removeClass("validate[required]");
}

これは、検証が必要なページ要素を非表示にするときに、検証エラー メッセージが奇妙な場所に表示されるのを回避するためにかなりうまく機能します。

于 2010-11-19T17:54:14.100 に答える
0

私は一時的なより多くのフィールドを無効にする必要があります、私はこれをかなりの解決策にします:小さなjquery拡張機能:

jQuery.extend(jQuery.fn, {
    switchValidationEngine: function (enable) {
        $.each(this, function (i, n) {
            var field = $(n);
            var rulesParsing = field.attr("class");
            var newVal = enable ? rulesParsing.replace(/validate_not\[/g, "validate[") : rulesParsing.replace(/validate\[/g, "validate_not[");
            field.attr("class", newVal);
        });
    }
});

フィールド検証を無効にするための使用法:

$("#txtModel").switchValidationEngine(false);

フィールド検証を再度有効にするための使用法:

$("#txtModel").switchValidationEngine(true);

于 2013-12-04T22:50:12.190 に答える