我创建了一个网站,其中一个输入是使用<input type="date" name="rcdate" />
的日期。它非常方便,但它只适用于Chrome。使用PHP处理它时的输出是YYYY-MM-DD格式。
问题是当有人使用过时的浏览器(注意:Firefox,IE)时,UI无法正常工作(注意:显示文本框),系统会提示用户自己输入日期,格式总是不一致和日期的MySQL格式是YYYY-MM-DD。
任何人都可以提供HTML版本检查器,以便用户收到他/她的浏览器与我的网站不兼容的消息吗?谢谢。关于如何绕过这个的任何其他建议也是受欢迎的。
编辑: 我的处理日期代码如下:
<?php
if(isset($_POST['rcdate'])){ $rcdate= $_POST['rcdate']; }
$strSQL = "Insert INTO nqascorecard (
`RcDate`
VALUES (
'$rcdate'
)";
$rs = mysql_query($strSQL) or die(mysql_error());
?>
答案 0 :(得分:2)
使用像Modernizr这样的东西来检测日期类型是否受支持会更好,并且如果没有日期选择器则为日期选择器实现javascript后退。没有多少桌面浏览器支持日期输入方法。见http://caniuse.com/#feat=input-datetime
答案 1 :(得分:1)
根据w3schools http://www.w3schools.com/html/html5_form_input_types.asp
,Firefox和Internet Explorer目前不支持HTML5“日期”输入类型但是,有一些基于JavaScript的日历,就像这个jQuery UI http://jqueryui.com/datepicker/一样构建为跨浏览器兼容,因此我建议使用类似的东西,这样你就不用做浏览器了 - 嗅探。
答案 2 :(得分:1)
一般情况下无法“检查HTML版本”,但您可以使用Modernizr或直接在JavaScript代码中使用功能检查。也就是说,你可以例如检查浏览器是否识别type=date
属性(以便它反映在DOM中)。但是,这里的问题实际上是:如果不支持该功能(如input type=date
),您应该怎么做?如果你有一个很好的备份计划,比如使用JavaScript小部件,为什么不简单地使用而不是 input type=date
?此外,功能检查可能无法正常工作:浏览器可能会识别type=date
但无法提供实现它的合理UI。
当对input type=date
的支持变得普遍以及何时(或如果)已正确本地化时(当前HTML5草案对此非常混乱,并且实现倾向于通过 system 语言环境进行本地化,而不是 page locale),您可以使用input type=date
进行简单备份:如果浏览器不支持它(以便它回退到简单的文本输入框),请插入告诉用户的说明使用yyyy-mm-dd格式。或者,为了更安全,将这些说明放入静态内容并使用JavaScript删除它们,如果您能够检测到浏览器真正支持input type=date
。