easyui 날짜 시간 상자 ie 호 환 문제 해결

며칠 전 프로젝트 가 마지막 준비 온라인 단계 에 들 어 갔 는데 테스트 에서 easyui 의 datetimebox 플러그 인 을 사용 하여 얻 은 시간 이 i 일 때 현재 시간 보다 더 늦 은 시간 을 얻 을 수 없다 는 것 을 알 게 되 었 습 니 다.그 때 는 이렇게 썼 습 니 다.

	$(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 는 날 짜 를 포맷 하 는 형식 입 니 다.파 서 는 포맷 된 날 짜 를 분석 하 는 것 입 니 다.구체 적 인 작성 방법 은 제 가 캡 처 한 API 그림 을 보 세 요.

parse 는 ie 에서 사용 할 수 없 기 때문에 i 에서 포맷 후 날 짜 를 표시 하 는 시간 을 분석 할 수 없습니다.다음은 제 가 고 친 코드 입 니 다.

$(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 의 호 환 문 제 를 해결 하 는 것 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기