Ereignis "onchange" funktioniert manchmal nicht
reinhard
- javascript
0 Vinzenz Mai0 Reinhard
0 Harlequin
Hallo Leute,
ich habe eine HTML-Anwendung mit clientseitigen Scripten geschrieben, die auf das Ereignis "onchange" von Textfeldern reagiert. Meist funktioniert alles reibungslos und richtig. ABER: es kann vorkommen, daß man sich nach einer Eingabe in ein Textfeld mit der Maus so aus dem Feld "herausmogelt", daß das Ereignis onchange nicht zündet und damit meine schöne Plausibilitätsprüfung der Eingabe nicht funktioniert. Wie gesagt: 99x zündet das Ereignis, 1x nicht. Es gibt auch keine Fehlermeldungen o.ä., das Ereignis tritt halt einfach nicht ein.
Ich habe leider noch keine Regel in dem Verhalten des Browsers (IE 6.0) entdecken können, wann das Ereignis zündet und wann nicht.
Ist jemandem dieses Verhalten auch schon aufgefallen? Ist das ein Fehler? Kann man etwas dagegen tun? Es ist sehr lästig, denn damit ist es möglich, daß Anwender unplausible Daten an den Server schicken, die ich dort erst wieder mühsam überprüfen müßte ...
Danke im voraus für einen Tip,
Euer Reinhard
Hallo Reinhard,
Es ist sehr lästig, denn damit ist es möglich, daß Anwender unplausible Daten an den Server schicken, die ich dort erst wieder mühsam überprüfen müßte ...
selbstverständlich ist es eine gute Idee, Eingaben bereits clientseitig zu prüfen, um sich den einen oder anderen unnötigen Versand von Daten an den Server zu ersparen. Außerdem sollte die Reaktion auf die Eingaben deutlich schneller sein.
Wie kommst Du auf die Idee, auf eine serverseitige Prüfung verzichten zu können. Diese ist unumgänglich. Der zusätzliche Aufwand hält sich in Grenzen, da die Prüfalgorithmen sowieso die gleichen sind.
Freundliche Grüße
Vinzenz
Danke für die beiden Reaktionen,
ich habe auch schon versucht, mit Hilfe anderer Ereignisse diesen (seltenen) Fehler aufzufangen (onblur usw.), aber es wurde damit alles noch viel umständlicher. Der Fehler ist anscheinend so exotisch, daß er noch kaum jemandem aufgefallen ist. Das fragliche Datenfeld ist nicht soooooo wichtig, als daß es am Server geprüft werden müßte, es sollte halt ein kleiner Service sein. Wirklich wichtige Daten prüfe ich natürlich am Server.
Nebenbei: beim Aufrufen der Startseite meiner Anwendung wird geprüft, ob Javascript + Cookies aktiviert sind. Sonst kommt man in die Anwendung garnicht hinein. Funktioniert alles gut.
Schöne Grüße,
Reinhard
Hi,
Ich habe leider noch keine Regel in dem Verhalten des Browsers (IE 6.0) entdecken können, wann das Ereignis zündet und wann nicht.
Ist jemandem dieses Verhalten auch schon aufgefallen? Ist das ein Fehler? Kann man etwas dagegen tun? Es ist sehr lästig, denn damit ist es möglich, daß Anwender unplausible Daten an den Server schicken, die ich dort erst wieder mühsam überprüfen müßte ...
Die Prüfung auf dem Server muss sowieso sein, es gibt auch User die JavaScript deaktiviert haben...
Ansonsten löst OnChange natürlich nicht aus, wenn der User den Text nicht ändert. Wenn du ihn z.B. mit Alert daraufhinweist den Text zu ändern und per setFocus zurück ins Textfeld schickst kann er es nun verlassen ohne den Text zu korrigieren. OnBlur als Lösung hat aber auch seine Nachteile, vor allem in Verbindung mit Alert (probier das mal im Firefox aus ;-).
Der IE scheint auch einen Bug zu haben, wenn man im onChange den Inhalt der Editbox ändert und dann den User per SetFocus ins Feld zurückschickt. Wenn der User dann den gleichen falschen Text wieder eingibt triggert onChange trotzdem nicht. Hier scheint der Vergleich die Änderung des Inhalts per Script zu ignorieren...
Gruß,
Harlequin