ruben: Tabulator abfangen

Beitrag lesen

Hallo!

Da auf Mac OS X die Einstellung zum Tabulator "soll er nur Textfelder anspringen oder auch Textfelder, Buttons und Links" sehr versteckt ist (zumindest in Firefox) und ich ein Formular habe, das möglichst schnell gehen soll und auch auf Rechnern, wo man nicht die Browsereinstellungen ändern möchte/kann, möchte ich es ermöglichen, dass per Javascript auch dann der nächste Button angewählt wird, wenn eigentlich das nächste Eingabefeld angesprungen würde.
Ich möchte normalerweise nicht mit den Benutzervorlieben herumpfuschen, aber in der Anwendung, wo ich das benutzen werde, ist das eindeutig die erwünschte Lösung. Ich strebe an, dass sich die Anwendung auf den unterschiedlichen Browsern gleich verhält und diese Einstellung stört da erheblich.

Es ist ziemlich schwierig im Netz eine gute Abhandlung dessen zu finden, da "tab" doppeldeutig ist.

Ich hab also ziemlich viel rumprobiert und habe nun folgende möglichen Lösungen parat:

Vernünftige Lösung: Eigentlich muss ich das Tab-Event auf window-Ebene registrieren und dann onblur einen refocus setzen, wenn das Feld per Tab verlassen wird.

Problem: Firefox und Opera lassen mich neu fokussieren, aber Safari, IE nicht, sie ignorieren einfach das focus() statement.
Workaround: ein timeout umgeht diese Sperre in Safari und IE, aber erzeugt auch ein Flackern, selbst in Firefox und Opera, nervig & unfein.

Andere Lösung: Da einzeilige Inputs in jedem Fall per Tab anvisiert werden und die Taste Enter auch in einzeiligen Inputs ein Absenden erwirkt, könnte ich einfach meine Buttons durch aufgestylte einzeilige Inputs ersetzen. Find ich aber extrem hässlich, erfordert viel mehr Javascript, damit es unobtrusive bleibt, etc.

Ich denke, ich werde es für Safari und MSIE mit timeout lösen und Firefox und Opera irgendwie davon ausnehmen. Ich weiß allerdings nicht, wie ich per Object detection, also ohne Browser Sniffing, erkennen soll, welcher Browser jetzt neufokussiert und welcher nicht.

Hat irgendjemand eine bessere Idee oder eine Idee für die Object detection? Diese aufgemotzten Textareas fangen ja auch Tabs ab, aber die benutzen ein iframe mit designmode? Stand in nem Forumpost hier, hab ich mich jetzt nicht reinvertieft, weil mir das dann doch zuviel des Bösen ist.

Vielen Dank,
Ruben