Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何验证HTML5日期格式_Javascript_Php_Jquery_Html_Date - Fatal编程技术网

Javascript 如何验证HTML5日期格式

Javascript 如何验证HTML5日期格式,javascript,php,jquery,html,date,Javascript,Php,Jquery,Html,Date,我想使用HTML5日期输入字段 <input type='date' name='customDate'> 以便其他用户可以从浏览器中使用内置日期选择器 我想检查输入是否为日期格式。正如我在这里发现的:没有独特的演示格式。例如,在Chrome中,日期字段的输入形式为dd.mm.yyyy,而在Firefox 24或IE 9/10中,输入字段中的日期显示为yyy-mm-dd 我的第一个问题是,您如何告诉用户您希望他以何种格式键入日期?在Firefox中,我需要 <label&

我想使用HTML5日期输入字段

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

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

我想检查输入是否为日期格式。正如我在这里发现的:没有独特的演示格式。例如,在Chrome中,日期字段的输入形式为dd.mm.yyyy,而在Firefox 24或IE 9/10中,输入字段中的日期显示为yyy-mm-dd

我的第一个问题是,您如何告诉用户您希望他以何种格式键入日期?在Firefox中,我需要

<label>Enter Date(YYYY-MM-DD)</label><input type='date' 
                                         name='customDate' placeholder='YYYY-MM-DD'>
输入日期(YYYY-MM-DD)
但这对于Chrome来说是错误的

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

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

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

像这样使用它:

<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))" >
输入日期(YYYY-MM-DD)
对于所有其他HTML5日期模式,请访问:


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

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

如果浏览器没有本机datepicker(如firefox),则应使用Modernizer进行检测,并使用。这是一篇很好的文章,解释了如何做到这一点。 不幸的是,jQuery日期选择器没有检查输入是否有效。
但是,可以设置dateType和ConstraintInput,但它们不会检查日期是否确实存在,只是检查语法是否正确。请注意,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()=""

$(“#开始日期”).val()

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

如果您想添加预设值,只需使用
value=“yyyy-mm-dd”
格式。遗憾的是,这不会每次都起作用,不是使用type=“date”,而是使用type=“text”tho