使用Javascript在Chrome中自动填充表单日期和时间

时间:2013-07-02 23:38:22

标签: javascript forms google-chrome datejs

我正在尝试使用通过GET传递的值在网站上填充表单。我遇到问题的两个字段是type="date"type="time"类型的输入标记。 Chrome有这个不错的功能,可以为您提供一个下拉日历来选择日期:

Chrome's Drop Down Calendar for Date Inputs

Chrome也为“时间”字段执行类似操作。问题是它不喜欢尝试填充这些类型的表单字段的javascript。我像这样传递GET信息:

Passed Information through GET to Populate the Form Fields

日期格式化的原因是因为这是后端需要的(不是我正在处理的),而日期直接来自后端代码。

我有一个函数可以自动填充document.$_GET作为一个数组,其中包含来自GET的所有传递值。我还包含date.js,这允许我使用Date.parse功能和其他一些功能。我通过这样的javascript传递它:

if(document.$_GET['time']!=undefined)
  document.getElementById('time').value=document.$_GET['time']; 

if(document.$_GET['date']!=undefined){
  var date = new Date();
  date = Date.parse(document.$_GET['date']);
  alert(date.toString('MM-dd-yyyy')); // <-- Debugging
  document.getElementById('date').value = date.toString('MM-dd-yyyy'); //WHY WON'T YOU WORK!?
}

在Safari上我得到了我期望得到的东西:

Autofilled form in Safari

使用Chrome时,我会留下空的表单字段:

Empty fields in Chrome

我很难过,不知道如何解决这个问题。我需要Chrome自动填充功能,类似于Safari的功能。

1 个答案:

答案 0 :(得分:1)

Google Chrome严格遵守日期格式。

日期使用以下格式YYYY-MM-DD。 时间适用于军事时间。 (24小时制)

这是一个样本, http://jsfiddle.net/vFnxw/2/

$("#date").attr({
    value:"2012-09-28"
})
$("#time").attr({
    value:"23:59:59"
})

以下是来源

http://dev.w3.org/html5/markup/input.date.html

http://dev.w3.org/html5/markup/input.time.html