0

所以,我遇到了这个问题,也许我只是没有想直,但网站如何处理这个例子会有所帮助。向后兼容性和HTML5日期输入 - 日期格式

我想使用HTML5日期输入 - 它很好,很流畅。但是,我需要这个日期才能最终作为日期字段放入mysql数据库中。问题不在于HTML5日期输入中的帖子值 - 而是它在旧版浏览器上恢复为文本时的问题。

如果我通过我的输入说出“请格式化YYYY-MM-DD”(这将是来自许多浏览器的高度公开的应用程序),那么当使用显示日期选择器的Chrome时,Chrome会自动格式化为MM /显示日期的DD/YYYY,我听说是本地化给用户的。

问题是这样的:如何将一个“格式为YYYY-MM-DD”的标签放到文本框中才会显示出来?如果我向最终用户指定他们需要以某种方式进行格式化,并且日期选择器只允许他们以不同的方式进行格式化,那么这会不会令人绝望地混淆?我预计这个表单会在多个地区使用,所以我无法预测默认的格式。

请注意这是一个前端问题;我了解如何获取POST值,但需要将向后兼容的文本框的POST值统一。

回答

1

如下您可以使用占位符属性:

<input type="date" name="myName" placeholder="Please format YYYY-MM-DD"> 

当浏览器不能识别日期类型,它会呈现为文本输入。占位符显示在文本输入上,但不显示日期输入。

现在,不幸根据caniuse,只有IE 10+支持占位符属性。我不确定这对你是否有问题。

如果它的问题,您可以使用Modernizr来测试占位符支持等功能,并将正确的类添加到正文中。如果是这样的话,你可以写有类似CSS规则:

.my-input-label { 
    display: none; 
} 
.no-placeholder .my-input-label { 
    display: inline-block; // Or block, if you need to support IE < 8 
} 

这将有标签显示在任何不支持占位符属性,但他们会从布局流中删除在任何事情上,从而优雅地退化。

最后,另一种方法是设置默认值。事情是这样的:

<input type="date" name="myName" value="Please format YYYY-MM-DD"> 

这不是优雅,它是从一个角度来看UX糟糕,但经验是普遍适用于不支持date输入类型所有的浏览器。

注意:我还没有在IE上测试Modernizr的类,所以我不积极的类是no-placeholder