是否可以使HTML datetime-local元素仅生成有效日期?

时间:2014-08-29 19:11:15

标签: javascript html datetime

我正在使用HTML datetime-local元素来获取用户的日期时间。此输入字段的问题在于它允许用户输入无法转换为JavaScript Date对象的值。一些可能的输入太大,例如以下日期太大:

invalid date

以下是使用JavaScript获取其值时会发生的事情:

var input = document.getElementById("__Date");
var time = input.value; // is "121212-12-12T12:12" right now
var value = new Date(time); // I get an error here - "Invalid Date"

这是完整的元素。我使用Google Chrome v37来运行此代码。

<input type="datetime-local" class="input-block-level EditableAttributeValue" autocomplete="off" autocorrect="off" id="__Date" max="2015-00-00T00:00:00:00">

我需要一种方法来禁止这些无效输入,最好不使用任何JavaScript来监听更改并手动验证输入。

1 个答案:

答案 0 :(得分:1)

虽然无法使用datetime-local对象解析Date()的值,但您可以通过input.valueAsNumber属性获取有效日期,然后转换为日期。这解决了问题并且无需进行此类验证。使用方法如下:

var input = document.getElementById("__Date");
var dateNumber = input.valueAsNumber; 
var date = new Date(dateNumber); // this is a valid date now - "Tue Dec 11 121212 16:00:00 GMT-0800 (Pacific Standard Time)"