我想设置日期输入的默认值,例如:25/12/2015(欧洲日期格式)。
如果浏览器兼容html 5并且我在输入字段中使用type =“date”,我必须添加value =“2015-12-15”,但如果浏览器不兼容html 5,我必须set value =“25/12/2015”。
如何使我的代码(php和js)兼容两种浏览器(html 5兼容与否)?
解决方案#1: 我不使用html 5“type = date”。这是不够的,因为我想尽可能使用浏览器日期选择器(特别是智能手机)。
解决方案#2: 我检查浏览器是否支持HTML5,并相应地设置值,但它有点重......
任何人都有更聪明的解决方案吗?
答案 0 :(得分:2)
真的应该直截了当
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
答案 1 :(得分:0)
我尝试实施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”,我确信一个人可以做得更好; - )