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