HTML输入框预填日期

5

我已经很久没有接触HTML了,现在重新开始学习。

我正在使用Salesforce以及HTML和Javascript。我有两个日期输入字段。我想知道有没有简单的方法可以填充这些字段: a. 今天的日期 b. 今天之前6个月的日期。

<input type="text" id="toDate" size="10" onmouseover="initialiseCalendar(this, 'toDate')"/> 

谢谢,Calvin


你想要显示哪种日期格式? - Surreal Dreams
2
你确定在鼠标悬停时填充它们是一件好事吗?这样,每次鼠标悬停在该字段上时,都会设置初始日期。 - MaxArt
请忽略鼠标悬停功能。它会弹出一个日历以选择日期。 - Richard N
2个回答

4
以下JavaScript代码将您的文本框的值设置为今天的日期,格式为yyyy-mm-dd。请注意,我如何将月份加1?getMonth()返回当前月份的0-11,因此需要加1:
var today = new Date();
document.getElementById("toDate").value = today.getFullYear() + "-" +
    parseInt(today.getMonth()+1) + "-" + ​​​​​​today.getDate();​​​​​

演示: Fiddle

请注意,如果月份或日期小于10,则每个数字只会显示一位。如果这是个问题,请告诉我。

编辑: 要从今天开始算6个月,请使用:

var today = new Date();
var past = today.setMonth(today.getMonth() - 6);

2
不需要使用 parseInt,因为参数已经是整数了。此外,Richard 说他想要 yyyy-mm-dd 格式。 - MaxArt
谢谢mattytommo,你有什么办法可以获取今天6个月前的日期吗? - Richard N
1
@MaxArt 已编辑以反映格式,谢谢。在上述情况下,您必须拥有 parseInt,因为它位于构建字符串的中间,因此仅仅对今天的日期进行 +1 操作,您最终会得到第41个月 :) - Mathew Thompson
@mattytommo 我理解你的意思,但是只需要将表达式放在括号中:... + (today.getMonth()+1) + ... - MaxArt

3

填充今天的日期:

var today = new Date();
document.getElementById("toDate").value = today.getFullYear() + "-"
        + String(today.getMonth() + 101).slice(-2) + "-"
        + String(today.getDate() + 100).slice(-2);

过去6个月:

var past = new Date();
past.setMonth(past.getMonth() - 6); //
document.getElementById("toOldDate").value = past.getFullYear() + "-"
        + String(past.getMonth() + 101).slice(-2) + "-"
        + String(past.getDate() + 100).slice(-2);

那是因为我复制粘贴太多了 :P 现在已经修复好了。有时候我会忘记把 today 改成 past - MaxArt
刚看到了,我们用了同样的代码,但这是可以预料的,因为那就是正确的做法 :) - Mathew Thompson
我将其标记为答案,因为您给了我完整的代码...还要非常感谢mattytommo。 - Richard N

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接