繁体   English   中英

如何为适用于html 5浏览器和较旧浏览器的type = date输入设置默认值

[英]How to set a default value for a type=date input that works with html 5 browsers and with older browsers

我想设置日期输入的默认值,例如:25/12/2015(欧洲日期格式)。

如果浏览器与html 5兼容,并且在输入字段中使用type =“ date”,则必须添加value =“ 2015-12-15”,但是如果浏览器与html 5不兼容,则必须设置value = “25/12/2015”。

如何使我的代码(php和js)与两种浏览器都兼容(是否兼容html 5)?

解决方案1:我不使用html 5“ type = date”。 这还不够,因为我想尽可能使用浏览器datepicker(特别是在智能手机上)。

解决方案#2:我检查浏览器是否支持HTML5,并相应地设置该值,但是它有点重...

有人有更聪明的解决方案吗?

真的应该直截了当

var input = document.getElementById('#id_of_your_date_input'); // <input type="date">

if ( input.type === 'date' ) {
    input.value = "2015-12-15";
} else {
    input.value = "25/12/2015";
}

输入类型只有在支持的情况下才是date ,在较旧的浏览器中,该类型将退回到text

我尝试实现adeneo解决方案,以便它可以对页面的所有type =“ date”输入“自动”运行。

$date="25/12/2015";
echo "<input name=\"date_number_1\" type=\"date\" value=\"$date\">";

window.onload = manage_date_input();

function manage_date_input(){
   var t_input = document.getElementById('mypage').getElementsByTagName('input');
   for(var i=0; i<t_input.length; i++)
   if(t_input[i].type === 'date'){
      var val=t_input[i].value;
      t_input[i].value=val.substring(6,4)+'-'+val.substring(3,2)+'-'+val.substring(0,2);
}

但这不起作用,因为似乎在onload事件上,由于日期格式错误,输入已经拒绝了该值...

所以我不得不做“相反的事情”:

$date="2015-12-25";
echo "<input name=\"date_number_1\" type=\"date\" value=\"$date\">";

function manage_date_input(){
 var t_input = document.getElementById('mypage').getElementsByTagName('input');
 for(var i=0; i<t_input.length; i++)
 if((t_input[i].name.substring(0,4)=='date')&&(t_input[i].type != 'date')&&t_input[i].value){
   var val=t_input[i].value;
   t_input[i].value=val.substring(8)+'/'+val.substring(5,7)+'/'+val.substring(0,4);
 }
}

它可以与新的html 5浏览器和不能处理type = date的旧浏览器无缝协作,但是我必须将所有日期输入都命名为“ date_something”,并且我敢肯定一个可以做得更好;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM