Frage Programmgesteuertes Auswählen von Text in einem Eingabefeld auf iOS-Geräten (mobile Safari)


Wie programmierst du den Text eines Eingabefeldes auf iOS-Geräten, z. iPhone, iPad mit mobiler Safari?

Normalerweise genügt es, den Anruf zu tätigen .select() Funktion auf der <input ... /> Element, aber das funktioniert nicht auf diesen Geräten. Der Cursor wird einfach am Ende des bestehenden Eintrags belassen, ohne dass eine Auswahl getroffen wird.


76
2017-07-17 15:24


Ursprung


Antworten:


setSelectionRange(0, 9999);

https://developer.mozilla.org/de/DOM/Input.select


85
2018-06-10 05:54



Nichts in diesem Thread funktionierte für mich, hier ist, was auf meinem iPad funktioniert:

// t is the input field
setTimeout(function() {
    t.setSelectionRange(0, 9999);
}, 1);

25
2017-09-15 19:43



Sieh dir diese Geige an: (Geben Sie einen 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

Mit einfachem Javascript. Habe das nicht mit jQuery versucht

document.getElementById("p1").selectionStart = 0
document.getElementById("p1").selectionEnd = 999

Beachten Sie, dass die Zahl 999 nur ein Beispiel ist. Sie sollten diese Nummern auf die Anzahl der Zeichen setzen, die Sie auswählen möchten.

AKTUALISIEREN:

  • iPod5 - iOS6.0.1 - Arbeiten ok.
  • iPad1 - iOS5.1.1 - Nur Text ausgewählt. Tippen Sie einmal auf die Auswahl, um das Menü "Ausschneiden / Kopieren" zu öffnen
  • iPad2 - iOS4.3.3 - Nur Text ausgewählt. Tippen Sie einmal auf die Auswahl, um das Menü "Ausschneiden / Kopieren" zu öffnen

In den letzten beiden Fällen können Sie experimentieren, indem Sie ein Klickereignis auf dem input Element

AKTUALISIEREN: (07-10-2013)

  • iPod5 - iOS7.0.2 - Verwenden der Geige in der Verknüpfung: Texteingabe im Eingabefeld nicht möglich.                   Wenn Sie auf Auswählen klicken, wird ich auf facebook.com weitergeleitet (??? wtf ???)                   keine Ahnung, was dort vor sich geht.

AKTUALISIEREN: (14-11-2013)

  • iOS 7.0.3: Danke an den Kommentar von Binki update das das                    .selectionStart und .selectionEnd  tut Arbeit.

AKTUALISIEREN: (15-01-2015)

  • iOS 8.x.x: Danke an den Kommentar von Michael Siebert. Aus dem Kommentar übernommen:                   Ich musste sowohl auf Fokus- und Klick-Ereignisse lauschen als auch auf setTimeout / _                   Damit es in beiden Fällen funktioniert: Klicken Sie auf die Eingabe oder auf den Fokus durch Tabs

23
2017-12-07 10:26



Es ist schwer, ein Negativ zu beweisen, aber meine Forschung legt nahe, dass dies ein Bug in Mobile Safari ist.

Beachten Sie, dass focus () mehr oder weniger funktioniert. Es kann jedoch mehr als ein Tippen erforderlich sein. Wenn Sie versuchen, auf einen Benutzer zu reagieren, tippen Sie auf das entsprechende Feld, da das Antippen das Feld ergibt Fokus. Wählen Sie leider () ist einfach nicht funktional in Mobile Safari.

Ihre beste Wette kann ein Fehlerbericht mit sein Apfel.


22
2017-08-30 09:39



Entschuldigung, in meinem früheren Post habe ich das Javascript nicht bemerkt, was bedeutet, dass Sie eine Antwort in Javascript wollten.

Um zu bekommen, was Sie wollen UIWebView mit JavascriptIch habe es geschafft, zwei wichtige Informationen zusammenzukratzen, um es zur Arbeit zu bringen. Ich bin mir nicht sicher über den mobilen Browser.

  1. element.setSelectionRange(0,9999); tut was wir wollen

  2. mouseUp-Ereignis rückgängig macht die Auswahl

Also (mit Prototyp):     

    input.observe ('Fokus', Funktion () {
      this.setSelectionRange (0, 9999);
    });
    input.observe ('mouseup', Funktion (Ereignis) {
      event.stop ();
    });

macht den Trick.

Matt


7
2017-07-25 08:03



Es sieht so aus, als ob der Fokus funktioniert, aber nur wenn er direkt von einem nativen Ereignis aufgerufen wird. Aufruf Fokus mit etwas wie SetTimeout nicht erscheint, rufen Sie die Tastatur. Die Steuerung der IOS-Tastatur ist sehr schlecht. Es ist keine gute Situation.


3
2018-03-22 03:02



Etwas wie das Folgende funktioniert für mich auf dem Webkit, das mit Android 2.2 geliefert wird:

function trySelect(el) {
    setTimeout(function() {
        try {
            el.select();
        } catch (e) {
        }
    }, 0);
}

Siehe Chrom Problem 32865.


1
2018-01-20 04:14



Mit iOS 7 auf dem iPad war die einzige Möglichkeit, dass ich diese Arbeit machen konnte, tatsächlich zu verwenden <textarea></textarea> Anstatt von <input> Feld.

z.B.

<textarea onclick="this.setSelectionRange(0, 9999);">My text will be selected when textarea is clicked.</textarea>

Wie man verhindert, dass der Benutzer den Text innerhalb des Bereichs ändert, war schwieriger, da Sie textarea nur lesend machen, der Auswahltrick wird nicht mehr funktionieren.


1
2018-02-05 16:01



Ich bin verrückt geworden auf der Suche nach dieser Lösung, während alle deine Antworten geholfen haben es öffnete eine andere Dose Würmer für mich.

Der Client wollte, dass der Benutzer dazu in der Lage ist Klicken Sie auf und wählen Sie alle aus, und auch lass den Benutzer "Tab" und wählen Sie alle auf dem iPad (mit einer externen Tastatur. Ich weiß, verrückt ...)

Meine Lösung für dieses Problem war, die Ereignisse neu zu ordnen. Zuerst Fokus, dann Klicken, dann Touchstart.

$('#myFUBARid').on('focus click touchstart', function(e){
  $(this).get(0).setSelectionRange(0,9999);
  //$(this).css("color", "blue");
  e.preventDefault();
});

Ich hoffe, das hilft jemandem, da du mir schon unzählige Male geholfen hast.


0
2017-11-02 15:32



Wenn Sie HTML5-kompatible Browser verwenden, können Sie verwenden placeholder="xxx" in deinem input Etikett. Das sollte den Job machen.


-4
2018-06-05 09:02