Est-il 'a le focus en JavaScript (jQuery)?
Est-il quelque chose que je peux faire comme ceci (perhap via un plugin)
if ( ! $('form#contact input]').hasFocus()) {
$('form#contact input:first]').focus();
}
Fondamentalement, définissez le focus sur la première entrée, mais seulement si l'utilisateur a déjà cliqué sur quoi que ce soit?
Je sais que ce sera trop de travail, mais est-il rien de plus élégant?
$(function() {
var focused = false;
$('form#contact input]').focus(function() {
focused = true;
});
setTimeout(function() {
if ( ! focused) {
$('form#contact input:first]').focus();
}
}, 500);
});
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de solution native mais oui, il y a une façon plus élégante, vous pouvez le faire:
Vous êtes à la définition d'un nouveau sélecteur. Voir Plugins/Création. Ensuite, vous pouvez faire:
ou:
jQuery.expr
utilise==
plutôt que===
?eval()
'd? J'ai toujours écrit. mon custom sélecteurs d'une manière différente.$('input:focus')
C'est CSS. Vous n'avez pas besoin de créer un "custom sélecteur." Il existe déjà! http://www.w3schools.com/CSS/pr_pseudo_focus.asp
Il suffit de fixer quelque procédé que ce soit que vous voulez faire pour que le sélecteur, et il permettra d'éliminer si l'élément en question n'est pas centrée. Je l'ai fait récemment pour garder un
keyup
à partir de l'instanciation d'un e-mail erreur de saisie de vérifier si l'adresse e-mail saisie n'a pas été utilisé.Si tout ce que vous essayez de faire est de vérifier si l'utilisateur a mis l'accent sur quoi que ce soit, il suffit de faire ceci:
:focus
ou:hover
sélecteurs.:hover
avant, donc je ne peux pas parler pour que. L'astuce consiste à obtenir le JS pour faire les démarches de sorte qu'il est en mesure de vérifier, de sorte que vous avez à mettre à l'intérieur d'une action d'une certaine sorte.querySelectorAll()
ou l'un de ses cousins. Si vous l'avez utilisé avec un jQuery personnalisé chose, comme:input
, il ne pourrait pas travailler (n'ai pas testé, serait dépend de la façon dont jQuery tokenizes le sélecteur).jQuery 1.6 a maintenant un dédié
:focus
sélecteur.J'ai eu du mal avec cletus approche, à l'aide de jQuery 1.3.2 et Firefox 3.6.8, parce que la chaîne
"a == document.activeElement"
n'était pas une fonction valide.Je fixe la définition d'une fonction pour la
focus
clé. En fait, toutes les autres combinaisons de touches définies dansjQuery.expr[':']
sont définis comme des fonctions. Voici le code:Donc, maintenant il fonctionne comme prévu.
Cependant, je vivais un comportement étrange dans Firefox 3.6.8 (peut-être un bug dans FF?). Si j'ai cliqué sur un texte d'entrée alors que la page a été rendu, et si j'ai appelé
is(":focus")
au chargement de la page, j'obtiens une erreur à partir du navigateur, rapporté par FireBug, et le script se briser.Pour résoudre ce problème, j'ai entouré le code avec un
try...catch
bloc, de retourfalse
en cas d'erreur. L'utiliser si vous voulez empêcher les utilisateurs de faire l'expérience de la même erreur:Non, il n'y en a pas.
Toutefois, vous pouvez simuler comme ceci:
$(this).data('focused', true)
maintenant, etc.Désespérément difficile de trouver une solution à ce problème compte tenu de la solution est en fait très simple:
JS:
Il y a un plugin http://plugins.jquery.com/project/focused
Vous pouvez aussi vérifier Utilisation de jQuery pour tester si une entrée a le focus
Je sais que c'est une vieille question, mais peut-être ma solution va aider quelqu'un 🙂
depuis cela n'a pas fonctionné pour moi:
..ont été "ce" est retourné à partir de flou de fonction. J'ai donc fait ceci:
Ici est une manière succincte le faire.
ou de le brancher sur votre exemple..
(Necro ftw, mais encore valable et utile)
*
ne devrait pas être nécessaire.