Der beste, sicherste, schoenste, schnellste, geilste und laengste Browser der Welt [Teil 13256931569]
- Verfasst von Schlens am 3. July 2009, 12:01 unter Boah ey!, Computer, Netz & Co
Ich bin gerade ueber einen seit 2000 bekannten und in 3.5b immer noch nicht (wirklich) behobenen Bug in Firefox gestolpert.
Einfaches Szenario, hat jeder von uns schon mal gemacht, kann sich jeder reinfuehlen, laber, laber, suelz: Formularvalidierung.
Im Moment sieht’s so aus, dass Pflichtfelder bei mir onsubmit ueberprueft werden. Fuer die Validitaet von Email-Adressen und URLs ist der Ansatz nicht unbedingt brauchbar, da man zusaetzlich zu den Pflichtfeldern auch noch evtl optionale Felder mit einbeziehen muss, etc, was die ganze Sache unnoetig verkompliziert.
Kompromiss: Man prueft einfach beim Verlassen des Email- oder URL-Feldes mittels onblur. Ist das Feld (wir nennen es mal el) leer, OK (kuemmert sich im Zweifelsfall der Pflichtfeld-Check drum), ist der Eintrag nicht valide, wird gemeckert. So weit so gut. Problem an der Sache ist, dass man hierbei den Focus auf das entsprechende Formfeld verliert. Loesung: el.focus().
Funktioniert in IE, funktioniert in Chrome, funktioniert mit Sicherheit auch Opera, funktioniert aber nicht in Firefox. Der vielfach vorgeschlagene Workaround, ein kleines Delay mit einzubauen (window.setTimer(el.focus(),50);), fuehrte auch nur zu weiterer Frustration, hat mich aber dem Ziel nicht naehergebracht.
Schlussendlich lag die Loesung in einer Aenderung der Syntax und expliziter Deklaration von focus() als Funktion (oder wie immer man den folgenden Aufruf auffassen darf):
window.setTimeout(function() { el.focus();}, 50);.
P.S.: Internet Explorer mag keine Variablen namens length
3. July 2009 um 15:34 -
Lustige Sache, denn genau das gleiche Problem hatte ich mal beim Anpassen eines Template fuer ein Wiki. Und ich dachte immer ich sei zu bloed fuer JS…
4. July 2009 um 07:32 -
Ha, da bist Du nicht der einzige :) Echt uebel, wenn man fuer drei Zeilen Code drei Stunden braucht *kopf->tischkante*