2017-07-17 3 views
0

私は大丈夫と思われる以下のコードを持っています。これは、日付ピッカーを使用し、二つの日付が追加されたときtotaldaysフィールドには、2つの日付の間の日数の量によって移入されます。Javascriptのdatepicker入力フィールドが発砲しない

<script type="text/javascript"> 
$("#dateone").datepicker({ 
    defaultDate: "+1w", 
    minDate: 0, 
    firstDay: 0, 
    dateFormat: 'dd-mm-yy', 
    changeMonth: true, 
    numberOfMonths: 1, 
    onSelect: function(selectedDate) { 
     var minDate = $(this).datepicker('getDate'); 
     var newMin = new Date(minDate.setDate(minDate.getDate() + 1)); 
     $("#datetwo").datepicker("option", "minDate", newMin); 
     var d1 = $('#dateone').datepicker('getDate'); 
     var d2 = $('#datetwo').datepicker('getDate'); 
     var diff = 0; 
     if (d1 && d2) { 
      diff = Math.floor((d2.getTime() - d1.getTime())/86400000); // ms per day 
     } 
     $('#totaldays').val(diff); 



    } 
}); 
$("#datetwo").datepicker({ 
    defaultDate: "+1w", 
    minDate: '+2d', 
    changeMonth: true, 
    firstDay: 0, 
    dateFormat: 'dd-mm-yy', 
    numberOfMonths: 1, 
    onSelect: function(selectedDate) { 
     var maxDate = $(this).datepicker('getDate'); 
     var newMax = new Date(maxDate.setDate(maxDate.getDate() - 1)); 
     $("#dateone").datepicker("option", "maxDate", newMax); 
     var d1 = $('#dateone').datepicker('getDate'); 
     var d2 = $('#datetwo').datepicker('getDate'); 
     var diff = 0; 
     if (d1 && d2) { 
      diff = Math.floor((d2.getTime() - d1.getTime())/86400000); // ms per day 
     } 
     $('#totaldays').val(diff); 

    } 
}); 

$("#dateone").datepicker('setDate', '+1'); 
$("#datetwo").datepicker('setDate', '+2'); 


</script> 

totaldaysが更新される一方で、変更イベントが発火していないようです。誰も助けることができますか?

おかげ

+1

?あなたは 'totaldays'が更新されていると言っています、そしてそれはchangeイベントの中にあるので、確かにそれは発射です - いいえ?カラードロップダウン - - 小包が をドロップダウン - 価格フィールドを 合計価格=色*荷物* totaldays 私は価格が更新されないの日付を変更すると、しかし、それは更新 : – Santi

+0

申し訳ありませんが、私は他のフィールドを持っています私はtotaldaysフィールドを手動で変更します。 datepickerが正しく起動していないためだと思いましたか? – pele09

答えて

0

あなたは、変更イベントをトリガーするtotaldays入力にchangeを呼び出すことができます。

$('#totaldays').val(diff).change(); 

コード例:どのような変更イベント

$("#dateone").datepicker({ 
 
    defaultDate: "+1w", 
 
    minDate: 0, 
 
    firstDay: 0, 
 
    dateFormat: 'dd-mm-yy', 
 
    changeMonth: true, 
 
    numberOfMonths: 1, 
 
    onSelect: function(selectedDate) { 
 
    var minDate = $(this).datepicker('getDate'); 
 
    var newMin = new Date(minDate.setDate(minDate.getDate() + 1)); 
 
    $("#datetwo").datepicker("option", "minDate", newMin); 
 
    var d1 = $('#dateone').datepicker('getDate'); 
 
    var d2 = $('#datetwo').datepicker('getDate'); 
 
    var diff = 0; 
 
    if (d1 && d2) { 
 
     diff = Math.floor((d2.getTime() - d1.getTime())/86400000); // ms per day 
 
    } 
 
    $('#totaldays').val(diff).change(); 
 
    } 
 
}); 
 

 
$("#datetwo").datepicker({ 
 
    defaultDate: "+1w", 
 
    minDate: '+2d', 
 
    changeMonth: true, 
 
    firstDay: 0, 
 
    dateFormat: 'dd-mm-yy', 
 
    numberOfMonths: 1, 
 
    onSelect: function(selectedDate) { 
 
    var maxDate = $(this).datepicker('getDate'); 
 
    var newMax = new Date(maxDate.setDate(maxDate.getDate() - 1)); 
 
    $("#dateone").datepicker("option", "maxDate", newMax); 
 
    var d1 = $('#dateone').datepicker('getDate'); 
 
    var d2 = $('#datetwo').datepicker('getDate'); 
 
    var diff = 0; 
 
    if (d1 && d2) { 
 
     diff = Math.floor((d2.getTime() - d1.getTime())/86400000); // ms per day 
 
    } 
 
    $('#totaldays').val(diff).change(); 
 
    } 
 
}); 
 

 
$("#dateone").datepicker('setDate', '+1'); 
 
$("#datetwo").datepicker('setDate', '+2'); 
 

 
$("#totaldays,#color,#parcels").change(function() { 
 
    var totaldays = parseInt($(this).val()); 
 
    var color = parseInt($("#color").val()); 
 
    var parcels = parseInt($("#parcels").val()); 
 
    $("#totalprice").val(totaldays * color * parcels); 
 
});
<link href="https://code.jquery.com/ui/1.12.0/themes/smoothness/jquery-ui.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
 

 
<input id="dateone" type="text" /> 
 
<input id="datetwo" type="text" /> 
 
<div> 
 
    Total Days 
 
    <input id="totaldays" type="text" /> 
 
</div> 
 
<div> 
 
    Color 
 
    <input id="color" type="text" /> 
 
</div> 
 
<div> 
 
    Parcels 
 
    <input id="parcels" type="text" /> 
 
</div> 
 
<div> 
 
    Total Price 
 
    <input id="totalprice" type="text" /> 
 
</div>

+0

Muchas gracias! ありがとうH77! – pele09

+0

@ pele09もしあなたがうまくいけば答えを受け入れてください。 – H77

+0

H77、もう一度、ありがとう – pele09

関連する問題