如何在我的 html5 日期输入上设置最大值,以便 Safari for iOS 可以识别它?

Posted

技术标签:

【中文标题】如何在我的 html5 日期输入上设置最大值,以便 Safari for iOS 可以识别它?【英文标题】:how can I set a max value on my html5 date input so that it could be recognized by safari for iOS? 【发布时间】:2012-01-15 01:48:43 【问题描述】:

我猜标题很清楚?

这是我输入的日期:

<input type="date" id="birthdate" name="birthdate" value="" max="1993-12-07" required/>

在 chrome 中,我无法使用字段的小箭头输入早于 1993-12-07 的日期(但如果我自己写日期,我可以)。

ios 的 safari 中,关注该字段只会带来一个不错的日期选择器。但是,此日期选择器不限于“max”属性。那么我该怎么做呢?当然,我有一个服务器端表单验证,但我也想在客户端进行验证。 任何想法?谢谢!

【问题讨论】:

【参考方案1】:

Safari 还不支持它。截至 2011 年 11 月,只有 Opera 和 chrome 支持它。无论如何这里是 w3spec http://www.w3.org/TR/html-markup/input.date.html#input.date.attrs.max

您可以在提交或更改时使用 js 验证。使用您选择的 js 验证框架

这里是纯 js 示例http://www.roseindia.net/answers/viewqa/Ajax/4734-start-date-and-end-date-validation-in-javascript.html。使用您的最大日期而不是结束日期

对于 jquery 解决方案看这个Validate that end date is greater than start date with jQuery

【讨论】:

现在,2014 年 10 月 - 移动 Safari 是否支持最大和最小日期? @VitalyZdanevich 任何支持链接 我不知道任何链接 - 这是一个问题。 即使在 2016 年 11 月,移动版 Safari 也不支持日期的 max 和 min 属性。 即使在 2020 年 1 月,移动端 Safari 仍然不支持日期的 max 和 min 属性(iOS 13.0)【参考方案2】:

找到动态禁用未来日期的解决方案:

@ string datestring = DateTime.Now.ToString("yyyy-MM-dd"); 
<input type="date" 
       required="required" 
       name="AttendanceDate" 
       max="@datestring" 
       class="form-control" />

【讨论】:

这在 android 上运行良好,但在 iOS 上不考虑 min 和 max 属性

以上是关于如何在我的 html5 日期输入上设置最大值,以便 Safari for iOS 可以识别它?的主要内容,如果未能解决你的问题,请参考以下文章

删除类型=日期的 html5 输入元素中存在的默认文本/占位符

用于格式化输入框以获取日期 mm/dd/yyyy 的 HTML5 模式?

Angular.js 和 HTML5 日期输入值——如何让 Firefox 在日期输入中显示可读的日期值?

如何禁用新的 Chrome HTML5 日期输入?

如何禁用新的 Chrome HTML5 日期输入?

如何在我的日期选择器上启用未来年份?