JavaScript在用户输入开始/结束日期时显示到期日期

时间:2012-10-09 10:55:05

标签: javascript date

之前从未在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'));
}
}

3 个答案:

答案 0 :(得分:1)

我认为你需要看看datejs。

http://www.datejs.com/

扩展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对象的格式非常重要,您需要先验证它。
  • 当我们创建到期日期时,该值不会以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 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;
}