我正在使用HTML datetime-local
元素来获取用户的日期时间。此输入字段的问题在于它允许用户输入无法转换为JavaScript 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来监听更改并手动验证输入。
答案 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)"