• 技术文章 >web前端 >js教程

    解决easyui在ie不兼容的方法

    php中世界最好的语言php中世界最好的语言2018-03-14 16:00:30原创1915
    这次给大家带来解决easyui在ie不兼容的方法,解决easyui在ie不兼容的注意事项有哪些,下面就是实战案例,一起来看一下。

    前几天项目进入最后准备上线阶段,测试突然发现使用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图吧:

    因为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来做判断条件~

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    jQuery中如何实现toggle方法

    jQuery+JSONP跨域需要怎样实现

    jquery中select组件的使用方法

    如何实现jquery回车登录效果

    以上就是解决easyui在ie不兼容的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:easyui 不兼容 ie
    上一篇:好用的js插件分享 下一篇:vue-cli初始化一个vue.js项目的方法实例
    线上培训班

    相关文章推荐

    • 浅析Node.js+Winston库如何构建简单日志功能• 浅谈Angular父子组件间怎么进行通信• javascript怎么实现句子反转• JavaScript怎么实现定时关闭div• Javascript怎么设置水印叠堆

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网