解决easyui日期时间框ie的兼容的问题


Posted in Javascript onMarch 01, 2018

前几天项目进入最后准备上线阶段,测试突然发现使用easyui的datetimebox插件获取的时间在ie的时候无法获取到比当前时间还往后的时间,当时是这么写的:

$(selector).datetimebox(
	{
formatter : function(date) {
	var y = date.getFullYear();
	var m = date.getMonth() + 1;
	var d = date.getDate();
	var h = date.getHours(); //获取当前小时数(0-23)
	var mi = date.getMinutes(); //获取当前分钟数(0-59)
	var s = date.getSeconds(); 
	var result = y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d)
+ " " + (h < 10 ? '0' + h : h)
+ ":" + (mi < 10 ? '0' + mi : mi);
	
	//console.log(result+"--第127行");
	if(second==false){

	} else {
result += ":" + (s < 10 ? '0' + s : s);
	}
	return result;
},
  parser : function(s) {
	var t = Date.parse(s);
	if (!isNaN(t)) {
return new Date(t);
	} else {
return new Date();
	}
}
	});

测试谷歌浏览器等主流浏览器都没有问题,可以把一开始回显的时间显示出来,并可以选择时间,但是到ie的时候,却发现选择不了时间了,而且回显的日期也不对,老是当前的时间。调试了好久,才发现是ie浏览器不支持js的parse()方法。parse()方法是把日期解析转换成该日期的毫秒数。

formatter是格式化日期的格式。而parser是把解析你格式化的日期,具体写法看我截的API图吧:

解决easyui日期时间框ie的兼容的问题

因为parse在ie中无法使用~导致在ie下无法解析显示出格式化过后日期的时间。下面是我自己改过的代码:

$(selector).datetimebox( 
  { 
  formatter : function(date) { 
   var y = date.getFullYear(); 
 var m = date.getMonth()+1; 
 var d = date.getDate(); 
 var h = date.getHours(); 
 var min = date.getMinutes(); 
 return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d)+' '+(h<10?('0'+h):h)+':'+min; 
  }, 
  parser : function(s) { 
 var ss = (s.split(" ")); 
 var ymd = ss[0].split("-"); 
 var hms = ss[1].split(":"); 
 //console.log(ymd+" "+hms); 
 var y = parseInt(ymd[0],10); 
 var m = parseInt(ymd[1],10); 
 var d = parseInt(ymd[2],10); 
 var h = parseInt(hms[0],10); 
 var min = parseInt(hms[1],10); 
 if (!isNaN(y) && !isNaN(m) && !isNaN(d) && !isNaN(h) && !isNaN(min)){ 
 return new Date(y,m-1,d,h,min); 
 } else { 
 return new Date(); 
 } 
  } 
  });

formatter格式化的日期是xxxx-xx-xx xx:x。所以在下面parser解析时先通过日期和时间之间的空格,把他俩分割开来。ss[0]==xxxx-xx-xx,ss[1]==xx:xx。这样的话再通过-和:的分割,把他们分割成一个个数字,这样的话直接写入new Date()的参数里就可以返回正确的日期格式了~~好了,经测试完美兼容ie这个坑爹的浏览器。

今天在使用时突然发现这个方法的一个bug,那就是如何一开始datetime时间框没有数据是,会报split错误,所以今天修改了下,加了个为空判断:

if(s==""){ 
 return new Date(); 
 }else{ 
 //alert(s); 
 var ss = (s.split(" ")); 
 var ymd = ss[0].split("-"); 
 var hms = ss[1].split(":"); 
 //console.log(ymd+" "+hms); 
 var y = parseInt(ymd[0],10); 
 var m = parseInt(ymd[1],10); 
 var d = parseInt(ymd[2],10); 
 var h = parseInt(hms[0],10); 
 var min = parseInt(hms[1],10); 
 if (!isNaN(y) && !isNaN(m) && !isNaN(d) && !isNaN(h) && !isNaN(min)){ 
  return new Date(y,m-1,d,h,min); 
 } else { 
  return new Date(); 
 } 
 }

在这要注意s是个字符串类型~所以不能用s==null来做判断条件~

以上这篇解决easyui日期时间框ie的兼容的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery滚动条插件jScrollPane的使用介绍
Nov 08 Javascript
js函数模拟显示桌面.scf程序示例
Apr 20 Javascript
BootStrap中Tab页签切换实例代码
May 30 Javascript
常用jQuery选择器汇总
Feb 02 Javascript
判断颜色是否合法的正则表达式(详解)
May 03 Javascript
Node.js+Express+MySql实现用户登录注册功能
Jul 10 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
vue-router实现tab标签页(单页面)详解
Oct 17 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
Aug 07 Javascript
Angular封装表单控件及思想总结
Dec 11 Javascript
解决pycharm双击但是无法打开的情况
Oct 31 Javascript
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 Vue.js
详解Immutable及 React 中实践
Mar 01 #Javascript
解决VUEX兼容IE上的报错问题
Mar 01 #Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 #Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 #Javascript
Node.js readline模块与util模块的使用
Mar 01 #Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
Mar 01 #Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 #Javascript
You might like
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
简单谈谈json跨域
2016/03/13 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
深入理解Python中各种方法的运作原理
2015/06/15 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
python中自带的三个装饰器的实现
2019/11/08 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
四种会话跟踪技术
2015/05/20 面试题
《陈涉世家》教学反思
2014/04/12 职场文书
少先队活动总结
2014/08/29 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
2014年大学生工作总结
2014/11/20 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
民间借贷被告代理词
2015/05/23 职场文书
校友会致辞
2015/07/30 职场文书
检讨书范文
2019/04/16 职场文书
创业计划书之酒店
2019/08/30 职场文书