Antwort an „Nico R.“ verfassen

Hallo zusammen,

ich komme gerade nicht weiter. Das Dialogfenster im Beispielscript kann man per Mausklick auf OK oder per Enter-Taste schließen (und dabei Daten absenden), siehe Konsolenausgabe. Nutze ich nur den Mausklick oder nur Enter, ist alles in Ordnung. Wenn ich aber z.B. den dialog beim ersten Mal per Enter schließe und beim zweiten Mal per click, wird der click zweimal ausgeführt.

button.addEventListener("click", function(event){
	
		dialog.showModal();		
		
		dialog_ok.addEventListener("click", function(event) {
			console.log("dialog klick OK");			
			dialog.close();
		}, {once: true} );		
		
		dialog.addEventListener("keydown", function(event) {	
			console.log("dialog keydown");
			if(event.keyCode == 13) {
				console.log("dialog keydown OK");
				event.preventDefault();
				dialog.close();
			}
		}, {once: true} );	

});	

Bei anderen Kombinationen wirds richtig wild... Das Ganze überschlägt und summiert sich vermutlich, weil ich mit jedem Aufruf des dialog-Fensters per button auch die Event-Handler für click und clack mehrfach registriere. Das hatte ich versucht über die Option once zu verhindern, aber das hatte nicht den erhofften Effekt.

Am einfachsten lässt sich das Problem im Beispielscript beheben, indem ich die beiden inneren EventListener außerhalb des button-EventListeners packe.

Aber gibt es auch eine Lösung, ohne die beiden auszulagern?

Schöne Grüße

Nico

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen