之前从未在JavaScript中编程,所以当用户从日历中选择开始日期和结束日期时,我会请求您的帮助显示到期日期。从日历中选择结束日期后,到期日期应显示为结束日期的两个月。例如: 用户选择2012年10月9日作为开始日期; 2012年10月16日为结束日期; 2012年12月16日应该是到期日。我怎样才能在JavaScript中实现这一目标?
请检查此代码,因为我不知道如何编辑此代码。
/**
* Click "Cal" on expiry date
*/
function getExpiryDate() {
if(!document.getElementById('enddate').value.length) {
alert("End date must be set first.");
}
else {
prevExpiryDate = document.getElementById('expirydate').value;
displayCalendar(document.forms[0].expirydate,'yyyy/mm/dd',
document.getElementById('expirydatebutton'));
}
}
答案 0 :(得分:1)
我认为你需要看看datejs。
扩展Javascript日期功能的库。
允许您执行以下操作: -
// Add 2 months to Today
Date.today().add(2).months();
这几乎涵盖了你的要求。
答案 1 :(得分:0)
由于您想在当前日期添加2个月,
var d = new Date(year, month, day);
d.setMonth(d.getMonth() + 2);
答案 2 :(得分:0)
JavaScript包含一个原生Date
对象,您可以按如下方式添加月份...
var endDate = document.getElementById('enddate').value;
var date = new Date(endDate);
date.setMonth(date.getMonth() + 2); // Yes it will calculate going over a year etc
prevExpiryDate = date.getFullYear() + "/" +
(date.getMonth() + 1) + "/" + // Months are 0 for January etc.
date.getDate();
注意强>
Date
对象的格式非常重要,您需要先验证它。或者您可以按照建议使用库
编辑更新了代码,以便更轻松地添加到OP的代码中
替代方法,使用事件处理程序,我可以在你的代码中看到你正在使用jQuery,如果你包含它可以充分利用它......
$("#enddate").change(function() {
var endDate = $(this).val();
// Calculate expiry date
var date = new Date(endDate);
date.setMonth(date.getMonth() + 2);
// Get date parts
var yyyy = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
$("#expirydate").val(yyyy + "/" + m + "/" + d);
});
这需要在文档就绪后的某个时间运行,在代码行441中,并且它将设置enddate字段以在每次更改时更新到期日期字段。如果您以编程方式更改它,则可能需要手动调用更改处理程序
// Insert value programmatically
$("#enddate").val(newValue).change();
否则你需要一种将初始值传递给displayCalendar
函数的方法,我没有关于这个函数如何工作的细节,所以我不能最好地告诉你如何做到这一点。
编辑这个函数是2006年DHTMLGoodies JS Calendar的一部分,它调用onchange但是对jQuery不好用所以你需要做的是使用基本的onchange属性替换上面的jQuery代码的元素......
document.getElementById("enddate").onchange = function() {
var endDate = this.value;
// Calculate expiry date
var date = new Date(endDate);
date.setMonth(date.getMonth() + 2);
// Get date parts
var yyyy = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
document.getElementById("expirydate").value = yyyy + "/" + m + "/" + d;
}