Der beste, sicherste, schoenste, schnellste, geilste und laengste Browser der Welt [Teil 13256931569]

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


2 Geräusche zu “Der beste, sicherste, schoenste, schnellste, geilste und laengste Browser der Welt [Teil 13256931569]”

  1. sirmoloch sagt:

    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…

  2. Schlens sagt:

    Ha, da bist Du nicht der einzige :) Echt uebel, wenn man fuer drei Zeilen Code drei Stunden braucht *kopf->tischkante*

Auch rumtönen?