如何设置适用于HTML5浏览器和旧浏览器的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)与这两种浏览器兼容(是否兼容HTML5)?
解决方案#1:我不使用html 5"type=date"。这还不够,因为我想尽可能使用浏览器日期选择器(尤其是智能手机)。
解决方案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",我相信其中一个可以做得更好;-)
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 如何将输入(type=text)从html表单传递到javascript函数
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 正在将base64 jpeg从input-type=file上传到服务器
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何临时暂停浏览器渲染,然后恢复整个页面
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 禁用(而不是隐藏)浏览器滚动条
- 如何设置适用于HTML5浏览器和旧浏览器的type=date输入的默认值
- 查找所有的输入type="number">在浏览器中不支持它们的页面上
- 哪些浏览器支持在input[type="file"]元素上触发click事件
- 非ie浏览器会在type="text/jscript"的标签内使用脚本吗?