• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Websocket-Applet - das richtige Formular-Event

nitramf

New member
Websocket-Applet - das richtige Formular-Event / Endlosschleife

Hallo!

ich habe ein kleines Problem.
Folgende Ausgangslage: Es gibt eine Java-Application die mittels Websocket mit meiner HTML/JS-basierenden Seite spricht. Auf dieser Seite sind einfache Formularelemente, um die Einstellungen des Servers zu ändern (Inputs, Buttons, Radio-Buttons).
Diese Überwache ich mit dem Event "onchange" mittels jQuery. Wenn dieses Event ausgelöst wird, wird der geänderte Parameter mittels Websocket zum Java-Server übertragen.

Nun gibt es folgende Problemstellung:
Angenommen, eine zweite Person hat das selbe Webinterface geöffnet und ändert eine Option. Bei der Änderung schickt der Server einen Broadcast an alle dass sich Parameter xy geändert hat. Wenn ich diesen Parameter jetzt in allen Formularen ändere, wird ja wieder das onchange-Event ausgelöst und das ganze geht von vorne los ->Endlosschleife.

Wie könnte man das konzeptionell umgehen?
Ich möchte ungern auf onclick wechseln, da man eine lange Radiobutton-Liste am besten auch per Tastatur ändern kann.

Würde mich über einen Tipp freuen!

Viele Grüße,
nitramf
 
Zuletzt bearbeitet:
wenn du vor einer fremd ausgelösten änderung erst den eventlistener löscht und danach wieder setzt sollte das problem beseitigt sein.
 
Das onchange-Event wird nur ausgelöst, wenn der Nutzer etwas ändert. Wenn du per JS den Wert des <input> veränderst, wird da gar nichts ausgelöst:
Code:
<!DOCTYPE html>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Fenstertitel</title>
<style type="text/css"></style>
</head>
<body>
<input id="test">
<button id="changeTest">change</button>
<script type="text/javascript">
(function(){
	var test = document.getElementById("test");
	test.addEventListener("change", function(){
		alert("changed");
	}, false);
	var counter = 0;
	document.getElementById("changeTest").addEventListener("click", function(){
		test.value = counter;
		counter += 1;
	}, false);
}());
</script>
</body>
</html>
 
AW: Websocket-Applet - das richtige Formular-Event / Endlosschleife

korbinian legst du die hand ins feuer dass das bei allen browsern so ist?
 
Zurück
Oben