J'ai le code suivant pour afficher une zone de texte dans une page Web HTML.
<input type="text" id="userid" name="userid" value="Please enter the user ID" />
Lorsque la page s'affiche, le texte contient le message Veuillez saisir l'ID utilisateur . Cependant, j'ai trouvé que l'utilisateur doit cliquer 3 fois pour sélectionner tout le texte (dans ce cas, veuillez saisir l'ID utilisateur ).
Est-il possible de sélectionner tout le texte en un seul clic?
Éditer:
Désolé, j'ai oublié de dire: je dois utiliser l'entrée type="text"
javascript
html
textinput
Des questions
la source
la source
<label>
pour l'étiquette et non levalue
. Vous pouvez utiliser JS et CSS pour lui donner la même apparence, tout en n'étant pas aussi antisémantique. dorward.me.uk/tmp/label-work/example.html a un exemple utilisant jQuery.Réponses:
Vous pouvez utiliser cet extrait javascript:
Mais apparemment, cela ne fonctionne pas sur Safari mobile. Dans ces cas, vous pouvez utiliser:
la source
this.id
comme argument pour le gestionnaire de clics. Mieux encore, vous pouvez éliminer legetElementById
tout et passerthis
comme argument.this.setSelectionRange(0, this.value.length)
place.Les solutions précédemment publiées ont deux bizarreries:
Voici une solution complète qui sélectionne tout le texte sur le focus, mais permet de sélectionner un point de curseur spécifique après le focus.
la source
.on('blur', 'input', function(){focusedElement = null;})
0
travaux pour moi en chrome et firefox. Je ne sais pas d'où vient votre timeout50
.Html (vous devrez mettre l'attribut onclick sur chaque entrée pour laquelle vous souhaitez qu'il fonctionne sur la page)
OU UNE MEILLEURE OPTION
jQuery (cela fonctionnera pour chaque saisie de texte sur la page, pas besoin de changer votre html):
la source
Je sais que c'est vieux, mais la meilleure option est maintenant d'utiliser le nouvel
placeholder
attribut HTML si possible:Cela entraînera l'affichage du texte à moins qu'une valeur ne soit entrée, éliminant ainsi la nécessité de sélectionner du texte ou d'effacer les entrées.
la source
Les réponses listées sont partielles selon moi. J'ai lié ci-dessous deux exemples de la façon de le faire dans Angular et avec JQuery.
Cette solution présente les fonctionnalités suivantes:
JQuery: http://plnkr.co/edit/VZ0o2FJQHTmOMfSPRqpH?p=preview
Angulaire: http://plnkr.co/edit/llcyAf?p=preview
la source
Essayer:
Ça marche bien pour moi.
la source
Vous pouvez toujours utiliser
document.execCommand
( pris en charge dans tous les principaux navigateurs )Sélectionne tout le texte dans l'élément actuellement focalisé.
la source
<input type="text" onclick="document.execCommand('selectall',null,false);" />
contenteditable
éléments. Je pense que vous pouvez également le rendre encore plus élégant, c'est-à<input type="text" onfocus="document.execCommand('selectall')">
- dire - à peu près sûr que vous pouvez supprimer lenull
etfalse
si vous ne les utilisez pas.onfocus
semble mieux queonclick
. et oui, on peut supprimernull
etfalse
. Merci!onfocus
, la page entière est sélectionnée lorsque l'utilisateur clique sur l'entrée dans Chrome.onclick
fonctionne bien.entrée autofocus, avec événement onfocus:
Cela vous permet d'ouvrir un formulaire avec l'élément souhaité sélectionné. Il fonctionne en utilisant l'autofocus pour frapper l'entrée, qui s'envoie ensuite un événement onfocus, qui à son tour sélectionne le texte.
la source
Remarque: Lorsque vous considérez
onclick="this.select()"
, Au premier clic, Tous les caractères seront sélectionnés, Après cela, vous souhaitiez peut-être modifier quelque chose en entrée et cliquer à nouveau parmi les caractères, mais il sélectionnera à nouveau tous les caractères. Pour résoudre ce problème, vous devez utiliser à laonfocus
place deonclick
.la source
En effet, utilisez
onclick="this.select();"
mais n'oubliez pas de le combiner avecdisabled="disabled"
- cela ne fonctionnera pas alors et vous devrez sélectionner manuellement ou multi-cliquer pour sélectionner, toujours. Si vous souhaitez verrouiller la valeur de contenu à sélectionner, combinez-la avec l'attributreadonly
.la source
Voici une version réutilisable de la réponse de Shoban:
De cette façon, vous pouvez réutiliser le script clair pour plusieurs éléments.
la source
Vous pouvez remplacer
Avec:
L'espace réservé est utilisé pour remplacer la valeur comme la façon dont vous vouliez que les gens puissent taper dans la zone de texte sans avoir à cliquer plusieurs fois ou à l'aide de ctrl + a. L'espace réservé le rend donc ce n'est pas une valeur mais comme son nom l'indique un espace réservé. C'est ce qui est utilisé dans plusieurs formulaires en ligne qui dit "Nom d'utilisateur ici" ou "E-mail" et lorsque vous cliquez dessus, "E-mail" disparaît et vous pouvez commencer à taper tout de suite.
la source
La solution exacte à ce que vous avez demandé est:
Mais je suppose que vous essayez d'afficher "Veuillez saisir l'ID utilisateur" comme espace réservé ou indice dans l'entrée. Vous pouvez donc utiliser les éléments suivants comme une solution plus efficace:
la source
Voici un exemple dans React, mais il peut être traduit en jQuery sur vanilla JS si vous préférez:
L'astuce ici est d'utiliser
onMouseDown
car l'élément a déjà reçu le focus au moment où l'événement "clic" se déclenche (et donc laactiveElement
vérification échouera).La
activeElement
vérification est nécessaire pour que l'utilisateur puisse positionner son curseur où il le souhaite sans avoir à sélectionner constamment de nouveau la totalité de l'entrée.Le délai est nécessaire car sinon le texte sera sélectionné puis instantanément désélectionné, car je suppose que le navigateur vérifie le positionnement du curseur après les mots.
Enfin, le
el = ev.currentTarget
est nécessaire dans React car React réutilise les objets événement et vous perdrez l'événement synthétique au moment où setTimeout se déclenche.la source
Le problème lié à la capture de l'événement de clic est que chaque clic suivant dans le texte le sélectionne à nouveau, alors que l'utilisateur s'attendait probablement à repositionner le curseur.
Ce qui a fonctionné pour moi, c'était de déclarer une variable, de sélectionnerSearchTextOnClick et de la définir sur true par défaut. Le gestionnaire de clics vérifie que la variable est toujours vraie: si c'est le cas, il la définit sur false et effectue la sélection (). J'ai ensuite un gestionnaire d'événements flou qui le remet à true.
Jusqu'à présent, les résultats semblent être le comportement que j'attendais.
(Edit: j'ai négligé de dire que j'avais essayé d'attraper l'événement focus comme quelqu'un l'a suggéré, mais cela ne fonctionne pas: après le déclenchement de l'événement focus, l'événement click peut se déclencher, désélectionnant immédiatement le texte).
la source
Cette question propose des options lorsque .select () ne fonctionne pas sur les plates-formes mobiles: sélection par programme du texte dans un champ de saisie sur les appareils iOS (Safari mobile)
la source
Html comme celui-ci
<input type="text" value="click the input to select" onclick="javascript:textSelector(this)"/>
et code javascript sans liaison
la source
Eh bien, c'est une activité normale pour un TextBox.
Cliquez 1 - Définir le focus
Cliquez 2/3 (double clic) - Sélectionnez le texte
Vous pouvez définir le focus sur la TextBox lors du premier chargement de la page pour réduire la «sélection» à un seul événement de double-clic.
la source
Utilisez "espace réservé" au lieu de "valeur" dans votre champ de saisie.
la source
Si vous utilisez AngularJS, vous pouvez utiliser une directive personnalisée pour un accès facile:
Maintenant, on peut simplement l'utiliser comme ceci:
L'exemple est avec requirejs - donc la première et la dernière ligne peuvent être ignorées si vous utilisez autre chose.
la source
Si quelqu'un veut le faire sur le chargement de la page avec jQuery (doux pour les champs de recherche), voici ma solution
Basé sur ce post. Merci à CSS-Tricks.com
la source
Si vous essayez simplement de remplacer le texte de l'espace réservé lorsqu'un utilisateur sélectionne l'élément, il est évidemment préférable d'utiliser de
placeholder
nos jours l'attribut. Cependant, si vous souhaitez sélectionner toute la valeur actuelle lorsqu'un champ gagne le focus, une combinaison de réponses @Cory House et @Toastrackenigma semble être la plus canonique. Utilisationfocus
etfocusout
événements, avec des gestionnaires qui définissent / libèrent l'élément de focus actuel, et tout sélectionner lorsqu'ils sont focalisés. Un exemple angular2 / typescript est le suivant (mais serait trivial à convertir en vanilla js):Modèle:
Composant:
la source