Ich habe den folgenden Code, um ein Textfeld in einer HTML-Webseite anzuzeigen.
<input type="text" id="userid" name="userid" value="Please enter the user ID" />
Wenn die Seite angezeigt wird, enthält der Text die Meldung Bitte geben Sie die Benutzer-ID ein . Ich habe jedoch festgestellt, dass der Benutzer dreimal klicken muss, um den gesamten Text auszuwählen (in diesem Fall ist es Bitte geben Sie die Benutzer-ID ein ).
Ist es möglich, den gesamten Text mit nur einem Klick auszuwählen?
Bearbeiten:
Entschuldigung, ich habe vergessen zu sagen: Ich muss die Eingabe verwenden type="text"
javascript
html
textinput
Fragen
quelle
quelle
<label>
für das Etikett und nicht vonvalue
. Sie können JS und CSS verwenden, damit es gleich aussieht, ohne so antisemantisch zu sein. dorward.me.uk/tmp/label-work/example.html hat ein Beispiel mit jQuery.Antworten:
Sie können dieses Javascript-Snippet verwenden:
Aber anscheinend funktioniert es auf Mobile Safari nicht. In diesen Fällen können Sie verwenden:
quelle
this.id
als Argument für den Klick-Handler verwenden. Besser noch, Sie könnten dasgetElementById
ganz beseitigen undthis
als Argument durchgehen .this.setSelectionRange(0, this.value.length)
stattdessen verwenden.Die zuvor veröffentlichten Lösungen weisen zwei Besonderheiten auf:
Hier ist eine Komplettlösung, die den gesamten Text im Fokus auswählt, aber die Auswahl eines bestimmten Cursorpunkts nach dem Fokus ermöglicht.
quelle
.on('blur', 'input', function(){focusedElement = null;})
0
Arbeiten für mich in Chrom und Firefox. Ich bin mir nicht sicher, woher deine Auszeit50
kommt.HTML (Sie müssen das onclick-Attribut auf jede Eingabe setzen, für die es auf der Seite funktionieren soll)
ODER EINE BESSERE OPTION
jQuery (dies funktioniert für jede Texteingabe auf der Seite, ohne dass Sie Ihr HTML ändern müssen):
quelle
Ich weiß, dass dies alt ist, aber die beste Option ist, jetzt das neue
placeholder
HTML-Attribut zu verwenden, wenn möglich:Dadurch wird der Text angezeigt, sofern kein Wert eingegeben wird, sodass kein Text ausgewählt oder Eingaben gelöscht werden müssen.
quelle
Die aufgeführten Antworten sind meiner Meinung nach teilweise. Ich habe unten zwei Beispiele dafür verlinkt, wie dies in Angular und mit JQuery gemacht wird.
Diese Lösung bietet die folgenden Funktionen:
JQuery: http://plnkr.co/edit/VZ0o2FJQHTmOMfSPRqpH?p=preview
Winkel: http://plnkr.co/edit/llcyAf?p=preview
quelle
Versuchen:
Es funktioniert großartig für mich.
quelle
Sie können immer verwenden
document.execCommand
( wird in allen gängigen Browsern unterstützt )Wählt den gesamten Text im aktuell fokussierten Element aus.
quelle
<input type="text" onclick="document.execCommand('selectall',null,false);" />
contenteditable
Elemente funktioniert . Ich denke, Sie können es auch noch etwas eleganter machen, dh<input type="text" onfocus="document.execCommand('selectall')">
- ziemlich sicher, dass Sie das entfernen könnennull
undfalse
wenn Sie sie nicht verwenden.onfocus
scheint besser alsonclick
. und ja, kann man abschaffennull
undfalse
. Vielen Dank!onfocus
wird die gesamte Seite ausgewählt, wenn in Chrome auf Eingabe geklickt wird.onclick
funktioniert gut.Eingabe-Autofokus mit Onfocus-Ereignis:
Auf diese Weise können Sie ein Formular mit dem gewünschten Element öffnen. Es funktioniert mit Autofokus, um die Eingabe zu treffen, die sich dann selbst ein Onfocus-Ereignis sendet, das wiederum den Text auswählt.
quelle
Hinweis: Wenn Sie berücksichtigen
onclick="this.select()"
, werden beim ersten Klick alle Zeichen ausgewählt. Danach möchten Sie möglicherweise etwas in der Eingabe bearbeiten und erneut zwischen den Zeichen klicken, aber alle Zeichen werden erneut ausgewählt. Um dieses Problem zu beheben, sollten Sieonfocus
anstelle von verwendenonclick
.quelle
Verwenden
onclick="this.select();"
Siedisabled="disabled"
es in der Tat, aber denken Sie daran, es nicht mit zu kombinieren - es funktioniert dann nicht und Sie müssen es manuell auswählen oder mit einem Mehrfachklick auswählen. Wenn Sie den ausgewählten Inhaltswert sperren möchten, kombinieren Sie ihn mit dem Attributreadonly
.quelle
Hier ist eine wiederverwendbare Version von Shobans Antwort:
Auf diese Weise können Sie das übersichtliche Skript für mehrere Elemente wiederverwenden.
quelle
Sie können ersetzen
Mit:
Der Platzhalter wird verwendet, um den Wert so zu ersetzen, wie Sie möchten, dass Personen das Textfeld eingeben können, ohne mehrmals klicken oder Strg + a verwenden zu müssen. Platzhalter macht es so, dass es kein Wert ist, aber wie der Name schon sagt, ein Platzhalter. Dies wird in mehreren Online-Formularen verwendet, in denen "Benutzername hier" oder "E-Mail" angegeben ist. Wenn Sie darauf klicken, verschwindet "E-Mail" und Sie können sofort mit der Eingabe beginnen.
quelle
Die genaue Lösung für Ihre Fragen lautet:
Aber ich nehme an, Sie versuchen, "Bitte geben Sie die Benutzer-ID ein" als Platzhalter oder Hinweis in der Eingabe anzuzeigen. Sie können also Folgendes als effizientere Lösung verwenden:
quelle
Hier ist ein Beispiel in React, das jedoch auf Vanilla JS in jQuery übersetzt werden kann, wenn Sie dies bevorzugen:
Der Trick hier ist zu verwenden,
onMouseDown
da das Element zum Zeitpunkt des Auslösens des "Klick" -Ereignisses bereits den Fokus erhalten hat (und daher dieactiveElement
Prüfung fehlschlägt).Die
activeElement
Überprüfung ist erforderlich, damit der Benutzer den Cursor an der gewünschten Stelle positionieren kann, ohne die gesamte Eingabe ständig neu auswählen zu müssen.Das Zeitlimit ist erforderlich, da andernfalls der Text ausgewählt und dann sofort abgewählt wird, da der Browser vermutlich die Nachwörter für die Cursorpositionierung überprüft.
Und schließlich
el = ev.currentTarget
ist dies in React erforderlich, da React Ereignisobjekte wiederverwendet und Sie das synthetische Ereignis verlieren, wenn setTimeout ausgelöst wird.quelle
Das Problem beim Abfangen des Klickereignisses besteht darin, dass jeder nachfolgende Klick innerhalb des Textes es erneut auswählt, während der Benutzer wahrscheinlich damit gerechnet hat, den Cursor neu zu positionieren.
Für mich hat es funktioniert, eine Variable zu deklarieren, selectSearchTextOnClick, und sie standardmäßig auf true zu setzen. Der Click-Handler überprüft, ob die Variable noch wahr ist: Wenn dies der Fall ist, setzt er sie auf false und führt select () aus. Ich habe dann einen Unschärfe-Ereignishandler, der ihn auf true zurücksetzt.
Die bisherigen Ergebnisse scheinen das erwartete Verhalten zu sein.
(Bearbeiten: Ich habe es versäumt zu sagen, dass ich versucht habe, das Fokusereignis abzufangen, wie es jemand vorgeschlagen hat, aber das funktioniert nicht: Nachdem das Fokusereignis ausgelöst wurde, kann das Klickereignis ausgelöst werden und die Auswahl des Textes wird sofort aufgehoben.)
quelle
Diese Frage enthält Optionen für den Fall, dass .select () auf mobilen Plattformen nicht funktioniert: Programmgesteuertes Auswählen von Text in einem Eingabefeld auf iOS-Geräten (mobile Safari)
quelle
HTML wie dieses
<input type="text" value="click the input to select" onclick="javascript:textSelector(this)"/>
und Javascript-Code ohne Bindung
quelle
Nun, dies ist eine normale Aktivität für eine TextBox.
Klicken Sie auf 1 - Fokus setzen
Klicken Sie auf 2/3 (Doppelklick) - Wählen Sie Text aus
Sie können den Fokus auf die Textbox legen, wenn die Seite zum ersten Mal geladen wird, um die "Auswahl" auf ein einzelnes Doppelklickereignis zu reduzieren.
quelle
Verwenden Sie in Ihrem Eingabefeld "Platzhalter" anstelle von "Wert".
quelle
Wenn Sie AngularJS verwenden, können Sie eine benutzerdefinierte Direktive für den einfachen Zugriff verwenden:
Jetzt kann man es einfach so benutzen:
Das Beispiel enthält requirejs - daher können die erste und die letzte Zeile übersprungen werden, wenn etwas anderes verwendet wird.
quelle
Wenn jemand dies beim Laden einer Seite mit jQuery (süß für Suchfelder) tun möchte, ist hier meine Lösung
Basierend auf diesem Beitrag. Vielen Dank an CSS-Tricks.com
quelle
Wenn Sie nur versuchen, Platzhaltertext zu erhalten, der ersetzt wird, wenn ein Benutzer das Element auswählt, ist es
placeholder
heutzutage offensichtlich die beste Vorgehensweise, Attribute zu verwenden . Wenn Sie jedoch den gesamten aktuellen Wert auswählen möchten, wenn ein Feld den Fokus erhält, scheint eine Kombination aus @ Cory House- und @ Toastrackenigma-Antworten am kanonischsten zu sein. Verwenden Siefocus
undfocusout
Ereignisse mit Handlern, die das aktuelle Fokuselement festlegen / freigeben und alle auswählen, wenn sie fokussiert sind. Ein Angular2 / Typoskript-Beispiel lautet wie folgt (wäre jedoch trivial, um es in Vanille-js umzuwandeln):Vorlage:
Komponente:
quelle