Verhindert Unschärfe, wenn der Benutzer klickt auf bestimmten div funktioniert nicht im Firefox
Bin ich mit Hilfe von jquery den Fokus auf ein Textfeld, wenn Sie auf einen bestimmten div. Es funktioniert gut in Internet Explorer aber nicht in Firefox. Irgendwelche Vorschläge?
var clickedDiv = false;
$('input').blur(function() { if (clickedDiv) { $('input').focus(); } });
$('div').mousedown(function() { clickedDiv = true; })
.mouseup(function() { clickedDiv = false });
Du musst angemeldet sein, um einen Kommentar abzugeben.
Punkt zu beachten: der focus () - Methode auf ein jquery-Objekt sich eigentlich nicht: es nur Fällen die Fokus-handler aufgerufen werden! tatsächlich konzentrieren sich die Artikel, sollten Sie dies tun:
Hinweis, dass ich die focus () - Methode auf native DOM-Objekte, nicht die jquery-Objekte.
Dies ist eine direkte (brute-force) zu ändern, um Ihre genauen code. Allerdings, wenn ich verstehe, was Sie versuchen zu tun richtig, Sie versuchen zu konzentrieren, ein Eingabe-Feld, wenn ein bestimmtes div geklickt wird , wenn die Eingaben im Fokus.
Hier ist mein nehmen auf, wie Sie es tun würde:
Punkt zu beachten: ich habe da ein timeout zu fokussieren, der Eingang in Frage, so dass die Eingabe tatsächlich gehen unscharf in der Zwischenzeit. Sonst hätten wir ihm konzentriert sich nur vor, es ist über Sie zu verlieren. Für die Entscheidung von 100 ms, es ist wirklich ein Glücksfall hier.
Cheers,
jrh
BEARBEITEN in der Antwort auf @Jim ' s Kommentar
Die erste Methode wahrscheinlich nicht funktionieren, weil es war der falsche Ansatz, um mit zu beginnen.
Als für die zweite Frage, sollten wir nutzen
.focus()
auf den systemeigenen DOM-Objekt und nicht auf das jQuery-wrapper um es, weil der native.focus()
Methode bewirkt, dass das Objekt tatsächlich schnappen Sie sich konzentrieren, während die jquery-Methode ruft einfach nur die event-handler verbunden mit derfocus
Veranstaltung.So, während die jquery-Methode ruft das focus-Ereignis-handler, der die native Methode tatsächlich gewährt Fokus daher verursacht der handler aufgerufen werden. Es ist nur bedauerlich, Nomenklatur, dass der name dieser Methode überschneidet.
Ich entschloss mich, es einfach durch ersetzen auf blur-Ereignis von
document.onclick
und prüfen geklickt-element, wenn keine Eingabe oder divhoffe, u finden, ist es nützlich