Wie entferne ich den Fokus aus dem Eingabefeld in jQuery?

136

Ich setze den Fokus auf ein bestimmtes Eingabefeld, wenn ich eine Seite mit der folgenden Zeile lade:

$('#myInputID').focus();

Gibt es einen Weg, den ich rückgängig machen kann oder diesen Fokus entfernen, wenn über ein bestimmtes Element bewege ? (Der Fokus muss nach dem Verlassen dieses Elements nicht zurückgesetzt werden.)

Ich konnte in jQuery keine Funktion finden, die dem oben genannten entgegengesetzt ist oder auf andere Weise hier funktionieren würde.

user2571510
quelle

Antworten:

227

Verwenden Sie .blur () .

Das Unschärfeereignis wird an ein Element gesendet, wenn es den Fokus verliert. Ursprünglich galt dieses Ereignis nur für Formularelemente wie z <input>. In neueren Browsern wurde die Domäne des Ereignisses um alle Elementtypen erweitert. Ein Element kann über Tastaturbefehle wie die Tabulatortaste oder durch Mausklicks an anderer Stelle auf der Seite den Fokus verlieren.

$("#myInputID").blur(); 
Milind Anantwar
quelle
Ok, ich glaube, ich mache hier etwas falsch oder ich habe das falsch beschrieben. Das Element, das ich hier verwenden möchte, hat die Klasse navbar (es ist eine Bootstrap 3-Navigationsleiste), daher habe ich Folgendes versucht, aber dies funktioniert nicht: $ ('. Navbar'). On ('mouseover', function () {$ ( '#myInputID'). blur ();});
user2571510
Ja, das habe ich gemacht. Wenn dies nicht funktioniert, kann ich stattdessen einfach den Fokus auf die Navigationsleiste setzen?
user2571510
1
@ user2571510: Versuchen Sie, innerhalb des Ereignisses eine Warnung auszugeben, und prüfen Sie, ob es ausgelöst wird oder nicht.
Milind Anantwar
Ja, die Warnung wird angezeigt, aber der Fokus wird nicht aus dem Feld entfernt.
user2571510
1
@ user2571510: Haben Sie doppelte IDs auf der Seite? versuchen Sie es mit$("[id=myInputID]").blur();
Milind Anantwar
0

Für alle Textfelder:

$(':text').blur()
Mujthaba Ibrahim
quelle
0

$(':text').attr("disabled", "disabled");Setzt alle Textfelder in den deaktivierten Modus. Sie können dies auch auf andere Weise tun, indem Sie jeder Textbox eine ID geben. Auf diese Weise wird das Codegewicht größer und das Leistungsproblem wird vorhanden sein.

Also besser $(':text').attr("disabled", "disabled");Ansatz.

Vinayak
quelle
0

Wenn Sie ein readonlyAttribut haben, würde die Unschärfe an sich nicht funktionieren. Das Gerät unten sollte den Job machen.

$ ('# myInputID'). removeAttr ('readonly'). trigger ('blur'). attr ('readonly', 'readonly');
Jeffz
quelle