2017-02-20 6 views
1

私のページには2 datepickersがあります。その間に1年の範囲があります。 これまでのうちの1つが変わるたびに、私はもう一方の値をチェックし、それをただちに更新します。JQuery onChangeDateイベントを手動で変更する

$("#DateFrom").datepicker().on("changeDate", function() { 
    var dt = new Date($(this).val()); 
    dt.setFullYear(dt.getFullYear() + 1) 
    var updateDate = new Date(dt); 

    var dateFrom =$(this).val(); 
    var dateTo = $("#DateTo").val(); 

    if (new Date(dateFrom).getTime() > new Date(dateTo).getTime()) 
     $('#DateTo').val(''); 

    if (new Date(dateTo).getTime() > new Date(updateDate).getTime()) 
     $('#DateTo').datepicker('setDate', updateDate); 
}); 


$("#DateTo").datepicker().on("changeDate", function (e) { 
    var dt = new Date($(this).val()); 
    dt.setFullYear(dt.getFullYear() - 1) 
    var updateDate = new Date(dt); 

    var dateTo = $(this).val(); 
    var dateFrom = $("#DateFrom").val(); 

    if (new Date(dateFrom).getTime() > new Date(dateTo).getTime()) { 
     $('#DateFrom').val(''); 
    } 

    if (new Date(dateFrom).getTime() < new Date(updateDate).getTime()) { 
     $('#DateFrom').datepicker('setDate', updateDate); 
    } 
}); 

あなたはdatepickerから日付を選択する場合、それは正常に動作しますが、あなたは手動であなたが何かを入力したときにイベントが発生し、それを入力しようとあれば、それは間違った日付を計算します。

例えば、#DateFrom値は01/01/2016であると私は01/01/201として現在の日付を取る5イベントを削除し、それが01/01/202としてupdateDateを計算しますときに私は'01/01/2015'に手動で変更した場合。

ユーザーが入力を完了した後にイベントをトリガする方法はありますか?

ありがとうございます。

+0

これはjqueryのUIまたはブートストラップのdatepickerですか? –

+0

@ GilleQ。それはブートストラップのdatepickerだ...私はまた、適切なタグを追加 – Kostis

答えて

0

[OK]を、私が

.focusout()イベントは、ユーザーが日付ピッカーや彼のタイプから日付を選択したかどうかをうまく動作するようです
$("#DateFrom").focusout(function() 
$("#DateTo").focusout(function() 

$("#DateFrom").focusout(function() 
$("#DateTo").focusout(function() 

からこれらの行を変更して、それを解決したようです手動で

誰かがより良い実装をしている場合は、投稿してください。

関連する問題