Je charge un modal bootstrap dynamique et il contient peu d'entrées de texte. Le problème auquel je suis confronté est que je veux que le curseur se concentre sur la première entrée de ce modal, et cela ne se produit pas par défaut.
J'ai donc écrit ce code pour le faire:
$('#modalContainer').on('show', function () {
$('input:text:visible:first').focus();
});
Mais maintenant, il se concentre sur l'entrée pendant un moment, puis disparaît automatiquement, pourquoi cela se produit et comment résoudre?
jquery
twitter-bootstrap
Amr Elgarhy
la source
la source
setTimeout(function() { /* Your code */ }, 100);
Réponses:
@scumah a la réponse pour vous: Bootstrap Twitter - Focus sur textarea à l'intérieur d'un modal sur clic
Pour Bootstrap 2
Mise à jour: pour Bootstrap 3
========== Mise à jour ======
En réponse à une question, vous pouvez l'utiliser avec plusieurs modaux sur la même page si vous spécifiez différentes cibles de données, renommez vos identifiants modaux pour qu'ils correspondent et mettez à jour les identifiants des champs de saisie du formulaire, et enfin mettez à jour votre JS pour qu'il corresponde à ces nouveaux ID:
voir http://jsfiddle.net/panchroma/owtqhpzr/5/
HTML
JS
la source
J'ai trouvé le meilleur moyen de le faire, sans jQuery.
fonctionne parfaitement.
Il s'agit d'un attribut html5. Pris en charge par tous les principaux navigateurs.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input
la source
<input type="text" class="form-control" placeholder="" autofocus>
@Html.TextBoxFor(m => m.UserName, new { @autofocus="" })
tabdindex="-1"
de votre modal, mais cela ne fonctionne qu'une seule fois. La fermeture et la réouverture ne se concentrent pas.La réponse de David Taiaroa est correcte, mais ne fonctionne pas parce que le temps de "fondre" le modal ne vous permet pas de vous concentrer sur l'entrée. Vous devez créer un retard:
la source
<input value="" autofocus>
et travaillé pour moi cette fois, étrangeLe code habituel (ci-dessous) ne fonctionne pas pour moi:
J'ai trouvé la solution :
voir plus ici
la source
J'ai eu ce bootstrap ajouté les informations suivantes sur leur page:
http://getbootstrap.com/javascript/#modals
la source
C'est le code simple qui fonctionnera le mieux pour vous sur tous les popups qui ont un champ de saisie avec le focus
la source
Je pense que la réponse la plus correcte, en supposant l'utilisation de jQuery, est une consolidation des aspects de toutes les réponses de cette page, plus l'utilisation de l'événement que Bootstrap passe:
Il travaillerait aussi changer
$(document)
à$('.modal')
ou pour ajouter une classe au modal que les signaux que cette focalisation devrait se produire, comme$('.modal.focus-on-first-input')
la source
essayez ce code, cela pourrait fonctionner pour vous
la source
$(this).find('input:text').first().focus()
Première étape, vous devez définir votre
autofocus
attribut lors de la saisie du formulaire.Et puis vous devez ajouter une déclaration pour définir l'autofocus de votre entrée après l'affichage de votre modal.
Essayez ce code:
la source
Si vous voulez simplement mettre au point automatiquement n'importe quel modal qui était ouvert, vous pouvez mettre dans vos modèles ou fonctions lib cet extrait de code qui se concentrera sur la première entrée:
la source
si vous recherchez un extrait de code qui fonctionnerait pour tous vos modaux et recherchez automatiquement le premier texte d'entrée dans celui ouvert, vous devez utiliser ceci:
Si votre modal est chargé en utilisant ajax, utilisez plutôt ceci:
la source
c'est la solution la plus générale
la source
Essayez de supprimer la propriété tabIndex du modal , lorsque votre entrée / zone de texte est ouverte. Remettez-le à ce qu'il était , lorsque vous fermez l'entrée / la zone de texte. Cela résoudrait le problème quelle que soit la version de bootstrap , et sans compromettre le flux d'expérience utilisateur .
la source
Selon la documentation de Bootstrap 4:
Par exemple:
Lien .
la source
Utilisez l'autofocus pour rechercher le bon élément de formulaire:
la source
C'est "#button" qui appelle la forme modale,
"#mymodal" est la forme modale,
"#myinput" est l'entrée sur laquelle vous souhaitez vous concentrer
la source