我有两个日期选择器,就是从第一个日期选择器中选择一个日期,从下拉列表中选择值,在此基础上,我试图计算下一个日期选择器中的下一个日期在此基础上,我计算了日期差异。但是,当我将下拉值传递给我的函数时,它会给我错误的结果。
这是我的代码:
$('#ELEdatepicker1').datepicker({
autoclose: true,
endDate: new Date(),
todayHighlight: true,
});
$('#ELEDuration').change(function(){
var duration = $('#ELEDuration').val();
var date2 = $('#ELEdatepicker1').datepicker('getDate');
date2.setYear(date2.getFullYear() + duration);
date2.setMonth(date2.getMonth());
date2.setDate(date2.getDate());
$('#ELEdatepicker2').datepicker('setDate', date2);
$('#ELEdatepicker2').datepicker(date2);
getELEdifference($(this),$('#ELEdatepicker2'));
});
$('#ELEdatepicker2').datepicker({
autoclose: true,
startDate: new Date(),
todayHighlight: true,
}).change(function(){
getELEdifference($('#ELEdatepicker1'),$(this));
alert('Are you sure ?');
getELECurrentdifference($(this));
});
function getELEdifference($this1,$this2)
{
if($this1.datepicker("getDate") != null && $this2.datepicker("getDate") != null)
{
var ELEcertDiff= $this1.datepicker("getDate") - $this2.datepicker("getDate");
var result = ELEcertDiff / (1000 * 60 * 60 * 24) * -1;
//$("#ELEcertDiff").text(result);
document.getElementById("ELEcertDiff").value = result;
}
}
function getELECurrentdifference($this1)
{
var CtrDate = new Date();
if($this1.datepicker("getDate") != null)
{
var ELEcertCurrentDiff= $this1.datepicker("getDate") - CtrDate;
var result = Math.round(ELEcertCurrentDiff / (1000 * 60 * 60 * 24) * +1);
//$("#ELEcertDiff").text(result);
document.getElementById("ELEcertCurrentDiff").value = result+1;
}
}
以下是小提琴: https://jsfiddle.net/5tfhgamL/
欢迎任何形式的帮助。提前谢谢。
答案 0 :(得分:1)
我不明白你的问题是什么,但我修复了你的代码上的一些问题。
我替换了getELEdifference($('ELEdatepicker1'),$('#ELEdatepicker2'));
而不是getELEdifference($(this),$('#ELEdatepicker2'));
因为'this'是一个选择框而不是一个日期选择器。另一个变化是为selectbox值和第一个datepicker的年份值添加parseInt。
完整代码:jsfiddle