0

jqueryを使用して、開始日が終了日よりも前であることを検証しています。開始日要素と終了日要素の数がわかっている場合に機能します。しかし、私の問題は、多くの開始日と終了日が存在する可能性がある私の形式です。以下に例を示します。

Start Date <input type="text" id="t1_sdate_0">
End date <input type="text" id="t1_edate_0">  

Start Date <input type="text" id="t1_sdate_1">
End date <input type="text" id="t1_edate_1">


Start Date <input type="text" id="t2_sdate_0">
End date <input type="text" id="t2_edate_0">  

Start Date <input type="text" id="t2_sdate_1">
End date <input type="text" id="t2_edate_1">

以下のようなことをしたい

          $('#sDate').datepicker(
                {gotoCurrent: true, changeMonth: true, changeYear: true, dateFormat: 'dd-M-yy', yearRange: '1850:2050',maxDate:'0'
                ,
                 onSelect: function(selected) {
                    $("#eDate").datepicker("option","minDate", selected);
                }});

        $('#eDate').datepicker(
                {gotoCurrent: true, changeMonth: true, changeYear: true, dateFormat: 'dd-M-yy', yearRange: '1850:2050',maxDate:'0'
                ,
                 onSelect: function(selected) {
                    $("#sDate").datepicker("option","maxDate", selected);
                }});
4

2 に答える 2

0

これを試して :

function Validate(){
      var isVallid = true;

    $("input[id*=sdate]").each(function(){          
            var nextInput = $(this).next();   
            console.log(nextInput);
            if (Date.parse($(this).val()) > Date.parse(nextInput.val()))
                  isVallid  = false;
      });

    return isVallid ;
}

デモをチェック

于 2012-12-10T17:58:39.707 に答える
0

jQuery の each() 関数を使用してパフォーマンスの問題に遭遇したことはありませんが、場合によってはパフォーマンスが低下します。

次の関数を検討してください。

function Validate(){
    var arr = $("input[id*=sdate]");
    for(var i = 0; i< arr.length; i++)
    {
        var splittedId = arr[i].id.split('_');
        var matchingInput = $('input[id*=edate_' + splittedId[splittedId.length - 1] + ']');
        if (Date.parse($(arr[i]).val()) > Date.parse(matchingInput.val()))
                return false;
    }
    return true;
}

実装には、他の答えに対して2つの利点があります。1 つ目は、DOM 要素の位置に依存しないことです。つまり、機能 (スケーラビリティ) を失うことなく、一致する入力のペアの間に要素を追加できます。次に、日付入力の数が少ない場合は気付かないかもしれませんが、極端な場合、たとえば 1000 個の入力では、この実装は最初の無効な入力ペアで返され、パフォーマンスの違いが見過ごされない可能性があります。

ここで実装を確認してください。

ハッピーコーディング!

于 2012-12-10T20:47:32.673 に答える