フォームに 2 つのフィールドがあり、互いに比較して有効かどうかを確認します。
<input type="text" name="StartDate" id="StartDate" value="2"
data-val="true" data-val-equalto="xx" data-val-equalto-other="EndDate"/>
<input type="text" name="EndDate" id="EndDate" value="3"
data-val="true" data-val-equalto="xx" data-val-equalto-other="StartDate"/>
にぼかすとStartDate
、EndDate
同様に検証されます。そのため、jQuery は、一方と他方の間の検証ループを回避することができます。
現在、カスタム検証ルールに同じメカニズムを実装しようとしています。「その他」フィールドから値を取得し、すべてが正しければ、「その他」でも検証をトリガーしますが、これは検証ループで終了します。
$.validator.addMethod("customequal-method", function (val, el, p) {
var $other = $(el).closest('form').find('input[name=' + p.other + ']');
if($other.val() == val){
try{$other.valid();}
finally{return true;}
}
return false;
});
jQuery と同じアプローチをどのように適用できますか? つまり、次の 2 つのフィールドがあるとします。
<input type="text" name="StartDate2" id="StartDate2" value="2"
data-val="true" data-val-customequal="xx xxx" data-val-customequal-other="EndDate2"/>
<input type="text" name="EndDate2" id="EndDate2" value="3"
data-val="true" data-val-customequal="xx xx" data-val-customequal-other="StartDate2"/>
EndDate2 を変更すると、blur の後、StartDate2 も検証され、jQuery と同じように両方が有効になるようにしたいと考えています。
私は jsFiddle で例をまとめようとしていますが、カスタム メソッドを機能させることができません: http://jsfiddle.net/vtortola/vu6tm/ (問題が見つかった場合は非常に感謝します)、別の方法を開始しましたjQuery控えめなカスタムアダプターとjsFiddleのメソッドでこれに関するスレッド
乾杯。