Javascript ist Toll!

12. September 2007 - 12:34

focus() Probleme mit Firefox

Firefox hat seit Urzeiten Probleme damit in bestimmten Fällen den Fokus auf ein Textfeld zu setzen. Einmal, wenn der Fokus unmittelbar nach einem onblur Event gesetzt werden soll und wenn vor dem Fokus ein alert() Fenster geöffnet wird.

Die Lösung, die in obigen Artikel beschrieben wird, autocomplete deaktivieren, funktioniert zumindest in der 2'er Version nicht mehr. Die einzige Lösung scheint ein Timeout zu sein, der unmittelbat nach dem alert() oder dem Blur Event aufgerufen wird. Dazu reicht ein Timeout von einer Millisekunde.

Beispiel

function setFocus(el) {
    var self = el;
    if(el.value) return;
    alert('Kein Text!');
    window.setTimeout( function() { self.focus();}, 1);
}

mit Timeout
ohne Timeout

Beschreibung

Beim verlassen der Felder wird geprüft ob ein Text eingeben wurde. Ist das Feld leer, erscheint eine Meldung. Nach dem wegklicken des Meldungsfensters soll das entsprechende Eingabefeld den Fokus erhalten. Im ersten Fall nach einem kurzen Timeout im zweiten ohne

ähnliche Artikel

Comments (6)
3944 mal gelesen.

6 Kommentare

Leave a comment »

Seiten:

1. Kommentar von: Micha
1. Februar 2008: 7:40

Hi,

wo ich schon mal hier bin, wenn ich im Opera in die Textfelder nach einander klicke, dann kommt die ALERT-Box. Nur, sowie ich sie weg klicke, erscheint sie sofort wieder – endloser Aufruf. Es half nur noch Alt+Strg+Entf…

Das willst Du anderen Usern doch sicher nicht auch zu muten, oder ;-)

Schöne Grüße
Micha

2. Kommentar von: Struppi
1. Februar 2008: 9:20

du musst einfach nur etwas in das Feld eingeben.

3. Kommentar von: Micha
1. Februar 2008: 13:58

Hi,

nein, wir mißverstehen uns gerade. Ich bekomme keine Gelegenheit, noch etwas einzugeben, weil sich permanent ein ALERT-Fenster öffnet. Der Effekt sieht in Opera so aus, wie bei folgendem Code:

while(true) alert(„Kein Text!“);

Man kann den Browser nur noch „hart“ beenden. Wie gesagt: Ich klicke ins erste Feld und dann gleich ins zweite – nirgend gebe ich was ein.

Besser Beschrieben?

Gruß Micha

4. Kommentar von: Struppi
1. Februar 2008: 17:21

Ja, ok (du hast übrigens einen Fehler in meiner WordPress installation entdeckt, danke)

Ich versuch das Problem zu lösen.

5. Kommentar von: Micha
2. Februar 2008: 16:02

Hallo Strupi,

habe ich bemerkt. Mein Eintrag wurde nicht angezeigt ;-)

Schöne Grüße
Micha

6. Pingback von: Mikrowelle » Der beste, sicherste, schoenste, schnellste, geilste und laengste Browser der Welt [Teil 13256931569]
3. Juli 2009: 12:01

[…] 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 […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Powered by WordPress Stop Spam Harvesters, Join Project Honey Pot
marketing-bankruptcy
marketing-bankruptcy
marketing-bankruptcy
marketing-bankruptcy