如何验证 HTML5 日期格式


How to validate HTML5 date format

我想使用 HTML5 日期输入字段

<input type='date' name='customDate'>

以便其他用户可以从他们的浏览器使用内置的日期选择器。

我想检查输入是否实际上是日期格式。正如我在这里发现的:有没有办法更改输入类型="日期"格式?没有独特的演示格式。例如,在Chrome中,日期字段的输入以dd.mm.yyyy的形式给出,而在Firefox 24或IE 9/10中,输入字段中的日期显示为YYYY-MM-DD的形式。

我的第一个问题是,你如何告诉用户你希望他输入日期的格式?在火狐中,我需要类似的东西

<label>Enter Date(YYYY-MM-DD)</label><input type='date' 
                                         name='customDate' placeholder='YYYY-MM-DD'>

但这对Chrome来说是错误的。

其次,如何在提交前检查当前输入是否为(浏览器的(有效日期格式?我知道我可以在提交后用 PHP 检查日期格式是否为 YYYY-MM-DD,但是如何在提交前使用 JavaScript 检查它?

像这样使用它:

<label>Enter Date(YYYY-MM-DD)</label>
<input type='date' name='customDate' placeholder='YYYY-MM-DD' pattern="(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))" >

对于所有其他HTML5日期模式,请访问以下内容:

http://html5pattern.com/Dates

我认为验证HTML5日期格式的最佳方法是将作业留给日期选择器(如果有(。

例如,chrome 或 ios5 的本机日期选择器不允许错误的用户日期输入。在chrome中,它甚至检查日期是否确实存在于人类日历中。

如果浏览器没有本机日期选择器(如Firefox(,则应使用Modernizer检测,并且应该使用jQuery UI日期选择器。这是一篇很好的文章,解释了如何做到这一点。不幸的是,jQuery 日期选择器不会检查输入是否有效。但是,可以设置 dateType 和 constrictInput,但它们不会检查日期是否真的存在,只是语法是否正确。请注意,jquery 验证插件在日期归属方面存在问题。

只需使用onfocus和onblur动态更改日期类型,并像下面这样进行验证。

<input type="text" id="startDate" onfocus="(this.type='date')" onblur="{this.type='text'}" name="startDate" placeholder="Start Date(yyyy-mm-dd)"/>
$("#startDate").val()=""

最后,您的日期值将是 yyyy-mm-dd

最好的方法是使用日历/日期选择器(即:jquery-ui(。

您可以指定所需的格式,并且也是用户友好的。

jquery-ui 详细信息和日期选择器示例