2016-04-19 12 views
1

開始日が終了日よりも高い場合は、2日間を比較してアラートを返しました。理由は分かりませんが、19.04.2016を開始日、01.05.2016を終了日として選択すると、アラートが表示されます。将来のjQuery datepickerの値

var main = function() { 
       var date1 = ""; 
       var date2 = ""; 
       $('h1').click(function() { 
        $('h1').remove(); 
      }) 

$('#date-start').datepicker({ 
    dateFormat: "dd.mm.yy", 
    minDate: new Date(), 
    onSelect: function(date) { 

     var startdate = $('#date-start').datepicker('getDate'); 
     $('#date-end').datepicker('option','minDate',startdate); 
    } 
}) 
$('#date-end').datepicker({ 
     dateFormat: "dd.mm.yy" 
}) 

$('#btn').click(function() { 
    date1 = $('#date-start').val(); 
    date2 = $('#date-end').val(); 

    if (date1 > date2) { 
     alert("Beginn muss vor dem Ende liegen"); 
     $('#date-start').css("border-color","red"); 
     $('#date-end').css("border-color","red"); 
    } 
    if (date1 == "") { 
     alert("Bitte alle Felder ausfüllen"); 
     $('#date-start').css("border-color","red"); 
     $('#date-end').css("border-color","red"); 
    } 

    document.getElementById("compare-date-text1").innerHTML = date1; 
    document.getElementById("compare-date-text2").innerHTML = date2; 
}) 
} 

$(document).ready(main) 

理由を理解できますか?

date1 = $('#date-start').datepicker("getDate"); 
date2 = $('#date-end').datepicker("getDate"); 

あなたの代わりに日付を比較するための文字列としてそれらを取り戻すしている - :datepicker必要にから日付を取得するための

答えて

1

date1date2を設定すると、日付ではなく文字列が表示されます。あなたが使用できる日付ピッカーから取得日については

var date1 = new Date($('#date-start').datepicker('getDate')); 
var date2 = new Date($('#date-end').datepicker('getDate')); 

次に、あなたが比較することができます:

if (date1 > date2){.........} 
+0

ありがとうございました。 – domihein

0

をあなたは、日付に文字列を比較しています。したがって、文字列"19.04.2016""01.05.2016"より大きい。 Datepicker ISO 8601 format"yy-mm-dd"の文字列をフォーマットすると、文字列が正しく比較されます。他の方法のようにgetDateに電話するのが良い方法です。