Maison > interface Web > js tutoriel > le corps du texte

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

php中世界最好的语言
Libérer: 2018-04-12 15:08:41
original
1992 Les gens l'ont consulté

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();
	}
}
	});
Copier après la connexion

. 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(); 
 } 
  } 
  });
Copier après la connexion

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(); 
 } 
 }
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!