type=‘date’的input标签
来源:互联网 发布:java 服务器 框架 编辑:程序博客网 时间:2024/04/29 07:43
最近在写一个手机网页时,要求使用原生的手机时间控件。需要使用input标签,之前并没有注意过type=‘date’的用法,在使用时也遇到了很多问题。在此一一总结一下:
1.首先调用浏览器自带时间控件,input的type属性有以下几种写法:
type=’date’ //显示年、月、日
type=‘month’//显示年、月
type=‘week’//显示年、周
type=‘datetime-local’//显示年、月、日、时、分
上述属性在chrome、safari、opera浏览器中,点击三角按钮会出现时间控件的弹框,供用户选择。但是在firefox中没有时间控件的支持,不会出现时间弹框。
在移动端Android和iPhone都能调用自己的时间控件供用户选择输入,但是每种手机的浏览器在选择时间后,显示在输入框中的样式还是会有差别。尤其是在选择了时、分的时候;
iPhone手机能正常选择和显示,会显示为:‘2016-11-11 18:00’这种;而且各系统版本兼容不错。
个别安卓手机却显示为:‘2016-11-11T18:00’这种(日期和小时之间是T);
在调试获取时间对象输出时发现:所有浏览器输出的都是带有T的时间对象,但是在页面展示时iPhone手机和部分安卓手机做了处理,使时间正常显示,而一些安卓手机可能没注意到这个细节,在页面展示时没做处理。这时就需要开发人员对展示内容做一下处理了(其实用‘ ’将T替换掉再展示就行了)。
2.在手机中input标签调用时间控件,样式表现不同,有些安卓机会带深灰色背景,iPhone为白色背景色。
3.对于js事件的支持,input的focus,blur都支持,但是有些安卓机不支持change事件(伤害到我了,没有找到解决办法。不知道用户在时间控件上选择时间确定后触发什么时间)。iPhone456都支持。其他的事件暂时没发现区别,欢迎补充。
4.input调用的时间控件没有时间限制筛选功能,不能满足多功能的需求。
因为没有找到功能齐全兼容良好的移动端时间插件,在做项目时自己用了笨方法,获取用户选择的时间对象,然后自己写逻辑进行限制。
举个例子,项目中有一项要求:只允许用户输入今天及今天以前7天内的日期。
这里就需要获取和设置时间对象的相关知识了,这里也先写下了供自己复习用,不需要的就不需要往下看了。
$('input[name="time"]').change(function(){ var myDate = new Date(); //获取当前时间对象,精确到当前的时、分、秒 var this_time=$('input[name="time"]').val();//获取用户选择后的时间值 var this_datetime=new Date(this_time);//获取用户选择的时间,生成时间对象 具体时间为时间8:00:00 var year = myDate.getFullYear(); //获取当前时间的年份 格式xxxx 如:2016 var month =myDate.getMonth()+1; //获取当前时间的月份 格式1-9月为x, 10-12月为xx 如:11 var date = myDate.getDate(); //获取当前时间的日期 格式同月份 如11 myDate=new Date(year+'-'+month+'-'+date); //获取根据上述时间生成的时间对象 具体时间为0:00:00 var now=new Date(year+'-'+month+'-'+date+' 8:00:00'); myDate.setDate(now.getDate()-7); //设置now对象相应日期的七天前日期 具体时间为0:00:00 if(this_datetime<myDate||this_datetime>now){ //时间对象可以直接比较大小 alert('拜访时间需选择今天及以前7天内的时间'); $('input[name="time"]').val(''); }; });
具体的方法在代码和注释里都做了说明,里面有一个坑就是:我们在自己设置时间对象时如new Date(‘2016-11-11’),生成的时间2016-11-11 0:00:00;
而当我们在时间控件里选择时间如:2016-11-11,然后用这个时间值设置时间对象new Date(value),生成的时间却是2016-11-11 8:00:00,这可能和我们国家的时间控件按北京时间进行了一些修改有关,但这毕竟在我们用js进行时间对比时会造成一定的判断错误,需要注意!
以上就是我在使用input调用原生时间控件时碰到的一些问题,一些心得总结如上。若发现有不对之处,请帮我指正!谢谢!
- type=‘date’的input标签
- html中input标签type=date 的赋值问题
- 时间戳赋值给input type=date的标签上
- type=“file”的input标签美化
- 更改input type=“date”等元素的默认样式
- input type=date 的兼容性等问题
- 获取 input[type=date]的值value
- HTML中INPUT type="date"标签如何赋值注意问题
- input[type="date"]默认样式修改
- input[type=date]默认样式修改
- input[type="date"]默认样式修改
- android支持html的<input type="file">标签
- android支持html的<input type="file">标签
- <input type="image"标签引发的页面提交!
- <input type="image"标签引发的页面提交!
- Html+CSS input type=file 文件标签的美化
- <input type="image"标签引发的页面提交!
- 修改input标签type=file类型的文字
- jabref搜索源
- 传智播客之网上支付笔记(三)
- arcgis for android 图例
- shape的四个角
- 转 树莓派使用标准PC104键盘 设置
- type=‘date’的input标签
- 如何在MyEclipse中使用Maven
- iOS 通知中心(NSNotificationCenter)的使用
- 让背景图适应不同分辨率的设备和不同浏览器
- 居中一个div
- 抢红包
- dp和px互转
- ffmpeg去黑边参数
- libnids使用和说明