Javascript ist Toll!

FAQ > Javascript

12. September 2007 - 12:34

focus() Probleme mit Firefox

Firefox hat seit Urzeiten Probleme mit dem setzten des focus auf ein Textfeld in bestimmten Fällen. Einmal wenn der Fokus unmittelbar nach einem onblur Event gesetzt werden soll oder wenn vor dem Fokus ein alert() Fenster geöffnet wird.

Die Lösung, die in obigen Artikel beschrieben wird, autocomplete zu deaktivieren, funktioniert zumindest in der 2'er Version nicht mehr. Die einzige Lösung scheint zu sein, unmittelbar nach einem blur Event oder alert() Fenster den focus wieder auf ein Feld zu setzen, ist ein Timeout abzuwarten. Dazu reicht ein Timeout von einer Millisekunde.

Beispiel

javascript
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 es leer, erscheint eine Meldung. Nach dem wegklicken des Meldungsfensters soll das Eingabefeld den Fokus erhalten. Im ersten Fall nach einem kurzen Timeout, im zweiten ohne

Ähnliche Artikel

Comments (6)
7051 mal gelesen.

6 Comments

Einen Kommentar hinterlassen »

Kommentare

1. von Micha
Freitag 1.Februar 2008: 07: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. von Struppi
Freitag 1.Februar 2008: 09:20

du musst einfach nur etwas in das Feld eingeben.

3. von Micha
Freitag 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. von Struppi
Freitag 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. von Micha
Samstag 2.Februar 2008: 16:02

Hallo Strupi,

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

Schöne Grüße
Micha

6. von Mikrowelle » Der beste, sicherste, schoenste, schnellste, geilste und laengste Browser der Welt [Teil 13256931569]
Freitag 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 [...]

Einen Kommentar hinterlassen

Name (erforderlich)
Mail (wird nicht angezeigt) (erforderlich)
Website

Folgende HTML Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Powered by WordPress Stop Spam Harvesters, Join Project Honey Pot kostenloser Counter Browser-Statistiken
rats-wonderful
rats-wonderful
rats-wonderful
rats-wonderful