0

フォームに 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"/> 

にぼかすとStartDateEndDate同様に検証されます。そのため、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のメソッドでこれに関するスレッド

乾杯。

4

1 に答える 1