Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie man mit der Kompatibilität der Easyui-Datums- und Uhrzeitbox im IE umgeht

php中世界最好的语言
Freigeben: 2018-04-12 15:08:41
Original
1957 Leute haben es durchsucht

Dieses Mal erkläre ich Ihnen, wie Sie mit der Kompatibilität des Easyui-Datums- und Zeitfelds im IE umgehen und Dinge, die Ihrer Aufmerksamkeit bedürfenWas sind sie? Werfen wir einen Blick darauf.

Vor ein paar Tagen trat das Projekt in die letzte Vorbereitungsphase für den Start ein. Während des Tests wurde plötzlich festgestellt, dass die mit dem Datetimebox-Plugin von easyui ermittelte Zeit nicht ermittelt werden konnte später als die aktuelle Zeit im IE. Damals steht es so:

	$(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();
	}
}
	});
Nach dem Login kopieren

Beim Testen von Mainstream-Browsern wie Google Chrome gibt es kein Problem. Die anfängliche Echozeit kann angezeigt und ausgewählt werden. Wenn ich jedoch den Internet Explorer verwende, kann ich die Uhrzeit nicht auswählen und das Echodatum ist falsch. ist die aktuelle Uhrzeit. Nach langem Debuggen habe ich festgestellt, dass dh der Browser die parse()-Methode von js nicht unterstützt. Die Methode parse() analysiert das Datum und wandelt es in Millisekunden des Datums um.

Formatter ist das Format zum Formatieren von Datumsangaben. Der Parser analysiert Ihr formatiertes Datum

Da Parse im IE nicht verwendet werden kann, ist es nicht möglich, das formatierte Datum und die Uhrzeit im IE zu analysieren und anzuzeigen. Das Folgende ist der Code, den ich selbst geändert habe:

$(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(); 
 } 
  } 
  });
Nach dem Login kopieren

Das vom Formatierer formatierte Datum ist xxxx-xx-xx xx:x. Daher werden beim Parsen unten Datum und Uhrzeit zunächst durch das Leerzeichen dazwischen getrennt. ss[0]==xxxx-xx-xx, ss[1]==xx:xx. Verwenden Sie in diesem Fall - und:, um sie in Zahlen zu unterteilen. Schreiben Sie in diesem Fall direkt new. Das korrekte Datumsformat kann in den Parametern von Date()~~ zurückgegeben werden. Nach dem Testen ist es perfekt mit dem Cheating-Browser IE kompatibel.

Als ich sie heute verwendete, entdeckte ich plötzlich einen Fehler in dieser Methode. Wenn also zu Beginn keine Daten im Datums-/Zeitrahmen vorhanden sind, wird ein Aufteilungsfehler gemeldet. Deshalb habe ich sie heute geändert und ein leeres Urteil hinzugefügt:

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(); 
 } 
 }
Nach dem Login kopieren

Hier ist zu beachten, dass s ein Typ String ist, sodass Sie s==null nicht verwenden können, um eine Beurteilungsbedingung zu erstellen~

Ich glaube, Sie haben die Methode nach dem Lesen gemeistert Der Fall in diesem Artikel und mehr. Bitte beachten Sie andere verwandte Artikel auf der chinesischen Website php!

Empfohlene Lektüre:

vue ermittelt, ob der Eingabeinhalt Leerzeichen enthält

Detaillierte Erklärung der Verwendung von Mutationen und Aktionen von Vuex

Das obige ist der detaillierte Inhalt vonWie man mit der Kompatibilität der Easyui-Datums- und Uhrzeitbox im IE umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!