Wie wählen Sie programmgesteuert den Text eines Eingabefelds auf iOS-Geräten aus, z. B. iPhone, iPad, auf dem Mobile Safari ausgeführt wird?
Normalerweise reicht es aus, die .select()
Funktion für das <input ... />
Element aufzurufen , dies funktioniert jedoch auf diesen Geräten nicht. Der Cursor bleibt einfach am Ende des vorhandenen Eintrags, ohne dass eine Auswahl getroffen wird.
Antworten:
https://developer.mozilla.org/en/DOM/Input.select
quelle
.focus()
die Eingabe vor dem Aufrufen ausgelöst habeinput.setSelectionRange
. Wenn Sie auf dasfocus
Ereignis am Eingang warten, denken Sie daran, eine Endlosschleife zu berücksichtigen.readonly
Attribut festgelegt ist.setSelectionRange()
einesfocus
Handlers funktioniert, wenn Sie.focus()
programmgesteuert auslösen. Wenn Sie jedoch manuell auf die Texteingabe unter iOS tippen, erfolgt die Auswahl nicht. Es genügt zu sagen, dass Sie nursetSelectionRange()
innerhalb eines setTimeout von 0 aufrufen müssen und es wie erwartet funktioniert, unabhängig davon, was den Fokus auslöst.Nichts in diesem Thread hat für mich funktioniert. Folgendes funktioniert auf meinem iPad:
quelle
Es ist schwer, ein Negativ zu beweisen, aber meine Forschung legt nahe, dass dies ein Fehler in Mobile Safari ist.
Beachten Sie, dass focus () mehr oder weniger funktioniert - obwohl mehr als ein Tippen erforderlich sein kann, um erfolgreich zu sein, und es nicht erforderlich ist, wenn Sie versuchen, auf ein Tippen eines Benutzers auf das betreffende Feld zu antworten, da das Tippen selbst das Feld angibt Fokus. Leider wählen () ist einfach nicht funktional in Mobile Safari.
Ihre beste Wahl ist möglicherweise ein Fehlerbericht mit Apple .
quelle
Sehen Sie sich diese Geige an : (Geben Sie Text in das Eingabefeld ein und klicken Sie auf "Text auswählen".)
Es wählt Text in einem Eingabefeld auf meinem iPod (5. Generation iOS6.0.1) aus, öffnet die Tastatur und zeigt auch das Menü Ausschneiden / Kopieren / Vorschlagen ... an
Verwenden von einfachem Javascript. Habe dies nicht mit jQuery versucht
Beachten Sie, dass die Nummer 999 nur ein Beispiel ist. Sie sollten diese Zahlen auf die Anzahl der Zeichen einstellen, die Sie auswählen möchten.
AKTUALISIEREN:
In den letzten beiden Fällen können Sie experimentieren, indem Sie ein Klickereignis für das
input
Element auslösenUPDATE: (07-10-2013)
UPDATE: (14-11-2013)
.selectionStart
und.selectionEnd
funktioniert .UPDATE: (15-01-2015)
quelle
<input/>
das iPad , als ich dachte, ich tippe auf Ihr , auf das CSS-Fenster von jsfiddle tippte (in dem alles, was ich tippte, unsichtbar war). Sobald ich auf das Richtige<input/>
getippt habe, funktioniert Ihre Schaltfläche "Text auswählen" unter iOS-7.0.3 einwandfrei :-).Entschuldigung, in meinem früheren Beitrag habe ich das Javascript nicht bemerkt, was bedeutet, dass Sie eine Antwort in Javascript wollten.
Um das zu erreichen, was Sie in UIWebView mit Javascript wollen , habe ich es geschafft, zwei wichtige Informationen zusammen zu kratzen, damit es funktioniert. Ich bin mir nicht sicher über den mobilen Browser.
element.setSelectionRange(0,9999);
macht was wir wollenDas mouseUp-Ereignis macht die Auswahl rückgängig
Also (unter Verwendung des Prototyps):
macht den Trick.
Matt
quelle
$("input").focus(function () { this.setSelectionRange(0, 9999); return false; } ).mouseup( function () { return false; });
focusin
anstelle von Fokus verwenden, damit dies funktioniert, iOS 7Es sieht so aus, als würde der Fokus funktionieren, aber nur, wenn er direkt von einem nativen Ereignis aufgerufen wird. Wenn Sie den Fokus mit SetTimeout aufrufen, wird die Tastatur nicht aufgerufen. Die Steuerung der iOS-Tastatur ist sehr schlecht. Es ist keine gute Situation.
quelle
In Webkit, das mit Android 2.2 geliefert wird, funktioniert für mich Folgendes:
Siehe Chromium- Ausgabe 32865 .
quelle
Mit iOS 7 auf dem iPad war die einzige Möglichkeit, diese Arbeit zu machen, die Verwendung
<textarea></textarea>
anstelle von<input>
Feld.z.B
<textarea onclick="this.setSelectionRange(0, 9999);">My text will be selected when textarea is clicked.</textarea>
Es war schwieriger zu verhindern, dass der Benutzer den Text innerhalb des Bereichs ändert, da der Auswahltrick nicht mehr funktioniert, da Sie den Textbereich schreibgeschützt machen.
quelle
Ich war verrückt nach dieser Lösung, während all Ihre Antworten mir geholfen haben, eine weitere Dose Würmer für mich zu öffnen.
Der Client wollte, dass der Benutzer in der Lage ist , alle zu klicken und auszuwählen , und dass der Benutzer auf dem iPad (mit einer externen Tastatur. Ich weiß, verrückt ...) "Tab" und alle auswählen kann .
Meine Lösung für dieses Problem war, die Ereignisse neu zu ordnen. Erster Fokus , dann klicken , dann Berührungsstart .
Ich hoffe, das hilft jemandem, denn Sie haben mir unzählige Male geholfen.
quelle
Wenn Sie HTML5-kompatible Browser verwenden, können Sie diese
placeholder="xxx"
in Ihreminput
Tag verwenden. Das sollte den Job machen.quelle