Maison  >  Article  >  interface Web  >  Comment gérer la compatibilité de la boîte de date et d'heure easyui dans IE

Comment gérer la compatibilité de la boîte de date et d'heure easyui dans IE

php中世界最好的语言
php中世界最好的语言original
2018-04-12 15:08:411993parcourir

Cette fois, je vais vous expliquer comment gérer la compatibilité de la boîte de date et d'heure easyui dans IE, et les questions nécessitant une attentionQuelles sont-elles ici ? cas. Jetons un coup d'oeil.

Il y a quelques jours, le projet est entré dans la phase finale de préparation au lancement. Lors du test, il a été soudainement découvert que l'heure obtenue à l'aide du plug-in datetimebox d'easyui ne pouvait pas être obtenue. plus tard que l'heure actuelle dans IE. À cette époque, c'est écrit comme ceci :

	$(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();
	}
}
	});

. Il n'y a aucun problème lors du test des navigateurs grand public tels que Google Chrome. L'heure initiale renvoyée peut être affichée et l'heure peut être sélectionnée. Cependant, lorsque j'utilise IE, je constate que l'heure ne peut pas être sélectionnée et que la date renvoyée est erronée. l'heure actuelle. Après un débogage pendant une longue période, j'ai découvert que le ie navigateur ne prend pas en charge la méthode parse() de js. La méthode parse() analyse la date et la convertit en millisecondes de la date.

formatter est le format de formatage des dates. L'analyseur analyse votre date formatée

Étant donné que l’analyse ne peut pas être utilisée dans IE, il est impossible d’analyser et d’afficher la date et l’heure formatées dans IE. Voici le code que j'ai moi-même modifié :

$(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(); 
 } 
  } 
  });

La date formatée par le formateur est xxxx-xx-xx XX:X. Par conséquent, lors de l'analyse ci-dessous, la date et l'heure sont d'abord séparées par l'espace qui les sépare. ss[0]==xxxx-xx-xx, ss[1]==xx:xx. Dans ce cas, utilisez - et : pour les diviser en nombres. Dans ce cas, écrivez directement new. Le format de date correct peut être renvoyé dans les paramètres de Date()~~ Eh bien, après test, il est parfaitement compatible avec le navigateur de triche IE.

J'ai soudainement découvert un bug dans cette méthode lorsque je l'utilisais aujourd'hui, c'est-à-dire que s'il n'y a pas de données dans la période datetime au début, une erreur de fractionnement sera signalée, je l'ai donc modifiée aujourd'hui et ajouté un jugement vide :

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(); 
 } 
 }

Il convient de noter ici que s est un type string~ donc vous ne pouvez pas utiliser s==null pour faire une condition de jugement~

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article, et plus encore. Veuillez prêter attention aux autres articles connexes sur le site Web chinois php !

Lecture recommandée :

vue détermine si le contenu d'entrée comporte des espaces

Explication détaillée de l'utilisation des mutations et des actions de Vuex

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn