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
很重要,您需要先验证这一点。
- 当我们创建到期日期时,该值不会在 2012/12/09 之前添加零,而是 2012/12/9
或者您可以按照建议使用库
编辑更新的代码,使其更容易添加到 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 日历的一部分,它调用 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;
}