web-dev-qa-db-fra.com

Comment forcer à perdre le focus de tous les champs d'un formulaire dans jQuery

Lorsqu'un champ de saisie change (onchange), je déclenche une fonction pour définir une variable. Le seul problème est que le champ doit d'abord perdre le focus avant que la variable ne soit définie et je peux vérifier si le ou les champs sont modifiés, c'est ce que je veux faire lorsque l'utilisateur clique sur un onglet afin que je puisse vérifier si le l'utilisateur est oublié de soumettre son formulaire dans l'onglet précédent. Comment forcer la perte de focus de tous les champs possibles, donc d'abord l'événement onchange peut avoir lieu?

43
Jilco Tigchelaar

Vous pouvez utiliser ceci:

$(':focus').blur()

Si vous n'avez pas jQuery dans votre site, vous pouvez le remplacer par:

let el = document.querySelector( ':focus' );
if( el ) el.blur();
89

Vous n'avez pas besoin de jQuery pour cela; vanillaJS peut également le faire.

document.activeElement.blur();

Remarque: Habituellement, je vérifie la nullité avant d'appeler une méthode, mais activeElement ne renverra que null s'il n'y a pas de ‹body› node, donc cet appel direct est assez sûr.

4
WoodrowShigeru

Vous pouvez déclencher un événement .blur()

$('SomeElement').blur(function () {
   // do whatever
});

$('SomeElement').blur();
4
frenchie