Comment supprimer le focus du champ de saisie dans jQuery?

136

Je mets le focus sur un certain champ de saisie lors du chargement d'une page en utilisant la ligne suivante:

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

Existe-t-il un moyen d'annuler ou de supprimer ce focus lorsque je survole un certain élément ? (La mise au point n'a pas besoin d'être réinitialisée après avoir quitté cet élément.)

Je n'ai pas pu trouver une fonction qui est l'opposé de ce qui précède dans jQuery ou qui fonctionnerait autrement ici.

user2571510
la source

Réponses:

227

Utilisez .blur () .

L'événement de flou est envoyé à un élément lorsqu'il perd le focus. À l'origine, cet événement n'était applicable qu'aux éléments de formulaire, tels que <input>. Dans les navigateurs récents, le domaine de l'événement a été étendu pour inclure tous les types d'éléments. Un élément peut perdre le focus via des commandes clavier, telles que la touche Tabulation, ou en cliquant sur la souris ailleurs sur la page.

$("#myInputID").blur(); 
Milind Anantwar
la source
Ok, donc je pense que je fais quelque chose de mal ici ou je l'ai décrit de la mauvaise manière. L'élément que je veux utiliser ici a la classe navbar (c'est une barre de navigation Bootstrap 3), j'ai donc essayé ce qui suit mais cela ne fonctionne pas: $ ('. Navbar'). On ('mouseover', function () {$ ( '#myInputID'). blur ();});
user2571510
Oui, je l'ai fait. Si cela ne fonctionne pas, pourrais-je simplement définir le focus sur la barre de navigation?
user2571510
1
@ user2571510: essayez de donner une alerte à l'intérieur de l'événement et voyez s'il est déclenché ou non.
Milind Anantwar
Oui, l'alerte s'affiche mais elle ne supprime pas le focus du champ.
user2571510
1
@ user2571510: avez-vous des identifiants en double dans la page ?? essayez d'utiliser$("[id=myInputID]").blur();
Milind Anantwar
0

Pour toutes les zones de texte:

$(':text').blur()
Mujthaba Ibrahim
la source
0

$(':text').attr("disabled", "disabled");définit toutes les zones de texte en mode désactivé. Vous pouvez faire d'une autre manière comme donner chaque identifiant de zone de texte. En faisant ce code, le poids sera plus important et les problèmes de performances seront là.

Alors mieux vaut avoir une $(':text').attr("disabled", "disabled");approche.

Vinayak
la source
0

Si vous avez un readonlyattribut, le flou seul ne fonctionnerait pas. La contrefaçon ci-dessous devrait faire l'affaire.

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