Endlosschleife durch onBlur-Event
Schenkeli Thomas
- javascript
Hallo,
ich habe folgende Ausgangssituation mit der ich absolut nicht glücklich bin, aber eine Anpassung dieses Verhaltens in der gesamten Applikation ist im Moment leider nicht möglich:
Zwei Inputfelder, bei denen auf das onBlur-Event (also beim Verlassen) ein Check durchgeführt wird, ob der Inhalt korrekt ist. Ist der Inhalt nicht korrekt, wird ein Alert-Fenster angezeigt und wieder das selbe Inputfeld fokusiert.
Das funktioniert auch ganz toll, solange man nicht aus dem einen Inputfeld heraus ein anderes Inputfeld mit ebenfalls "fehlerhaftem" Inhalt selektiert. Denn dann passiert folgendes:
Und dann gehts immer so weiter ...
Das Ganze passiert aber nur unter IE, Firefox scheint die Events in einer anderen Reihenfolge abzuarbeiten, weshalb es zu keinerlei Endlosschleife kommt. Hat jemand eine Idee was ich tun könnte um das selbe ohne Endlosschleife zu erreichen?
Dass der Lösungsansatz alles andere als ideal ist, ist mir klar und ich würde auch lieber jedes Inputfeld erst beim Speichern überprüfen um erstens den EBnutzerkomfort zu heben und zweitens solche Komplikationen zu vermeiden. Aber ein Redesign dieser Funktion ist im Moment aber eben leider nicht möglich
Danke für eure Hilfe
Thomas
hi,
- Durch die Fokusierung von Inputfeld A verliert Inputfeld B den Fokus, also wird das onBlur Event von Inputfeld B ausgeführt
- Daher wird eine alertmessage gezeigt und Inputfeld B fokusiert
Und dann gehts immer so weiter ...
onBlur durch onChange ersetzen?
gruß,
wahsaga
Yerf!
onBlur durch onChange ersetzen?
Wird wohl nicht helfen.
Folgendes Szenario:
Dass der Firefox Alertboxen im onBlur nicht mag hab ich glaub ich auch schon mal erwähnt, oder? (Es geht um Taskwechsel während der Cursor in einem Inputfeld mit falschen Wert steht. Dass die Alertbox den Fokusverlust des FF-Fensters verhindert bekommt der Fuchs irgendwie nicht auf die Reihe...)
Gruß,
Harlequin
Vielleicht so:
(schematisch)
if(infofelda=falsch&&schonblured!=true) // fragen ob inhalt falsch ist und ob nicht vorher schon gewechselt wurde.
schonblured = true // als globale Variable definieren
infofelda.focus() // Focus setzen
else
schonblured = false
:)
MFG
Griever
Hallo Griever.
if(infofelda=falsch&&schonblured!=true) // fragen ob inhalt falsch ist und ob nicht vorher schon gewechselt wurde.
= != ==
Griever
BTW: Was ist eigentlich aus Safari geworden?
Einen schönen Mittwoch noch.
Gruß, Ashura