我试图将日期预先填充到html " date“输入字段中,但它忽略了我试图传递的值:
<html>
...
<input id='date' type='date'>
...
</html>
<script>
...
var myDate = new Date();
$("#date").val(myDate);
...
我还尝试将date对象作为字符串传递
var myDate = new Date().toDateString();
$("#date").val(myDate);
当我打开表单时,日期字段是空白的。如果我去掉了type="date“标记,值就会显示为一个字符串,但是我就不能访问datepicker了。如何在预填入日期输入的同时仍能使用日期选择器?我被难住了。
谢谢。
发布于 2013-01-10 05:01:52
它必须设置为ISO格式。
(function () {
var date = new Date().toISOString().substring(0, 10),
field = document.querySelector('#date');
field.value = date;
console.log(field.value);
})()
http://jsfiddle.net/GZ46K/
发布于 2019-11-15 23:56:37
为什么不使用toISOString()
<input type='date'>
字段采用ISO8601格式(reference)的值,但您不应对其值使用Date.prototype.toISOString()
函数,因为在输出ISO8601字符串之前,它会将日期/时间读取为国际协调时标准时间( converts/represents :更改时区)(Date.prototype.toISOString()
:更改时区)。除非你碰巧正在工作或者想要这个时间标准,否则你会引入一个bug,你的日期有时会改变,但并不总是改变。
在不更改时区的情况下从日期对象填充HTML5日期输入
要想在不干扰时区的情况下为<input type='date'>
获得正确的输入值,唯一可靠的方法是手动使用date组件getter:
let d = new Date();
let datestring = d.getFullYear().toString() + '-' + (d.getMonth()+1).toString().padStart(2, '0') + '-' + d.getDate().toString().padStart(2, '0');
document.getElementById('date').value = datestring;
/* Or if you want to use jQuery...
$('#date').val(datestring);
*/
<input id='date' type='date'>
从未更改时区的日期对象填充HTML5日期和时间字段
这超出了原始问题的范围,但是对于希望从date对象同时填充Date和time HTML5输入字段的人来说,下面是我想出的方法:
// Returns a 2-member array with date & time strings that can be provided to an
// HTML5 input form field of type date & time respectively. Format will be
// ['2020-12-15', '01:27:36'].
function getHTML5DateTimeStringsFromDate(d) {
// Date string
let ds = d.getFullYear().toString() + '-' + (d.getMonth()+1).toString().padStart(2, '0') + '-' + d.getDate().toString().padStart(2, '0');
// Time string
let ts = d.getHours().toString().padStart(2, '0') + ':' + d.getMinutes().toString().padStart(2, '0') + ':' + d.getSeconds().toString().padStart(2, '0');
// Return them in array
return [ds, ts];
}
// Date object
let d = new Date();
// Get HTML5-ready value strings
let dstrings = getHTML5DateTimeStringsFromDate(d);
// Populate date & time field values
document.getElementById('date').value = dstrings[0]
document.getElementById('time').value = dstrings[1]
/* Or if you want to use jQuery...
$('#date').val(dstrings[0]);
$('#time').val(dstrings[1]);
*/
<input type='date' id='date'>
<input type='time' id='time' step="1">
发布于 2013-01-10 05:16:21
谢谢你j08691。这个链接就是答案。
对于像我这样苦苦挣扎的人来说,当他们说输入是"yyyy-mm-dd“时,它的意思是!
您必须有4位数字的年份。必须有破折号,并且没有空格。您必须使用2位数字表示日和月。
在我的示例中,1月份的myDate.getMonth只返回"1“(实际上它返回"0”,因为出于某种原因,javascript从0到11计算月份)。为了获得正确的结果,我必须执行以下操作:
var myDate, day, month, year, date;
myDate = new Date();
day = myDate.getDate();
if (day <10)
day = "0" + day;
month = myDate.getMonth() + 1;
if (month < 10)
month = "0" + month;
year = myDate.getYear();
date = year + "-" + month + "-" + day;
$("#date").val(date);
我希望这能帮助其他人,而不是像我在10月或本月10日之前测试的那样浪费时间!LOL
https://stackoverflow.com/questions/14245339
复制相似问题