Pertanyaan Secara terprogram memilih teks di bidang input pada perangkat iOS (Safari ponsel)


Bagaimana Anda secara terprogram memilih teks bidang input pada perangkat iOS, mis. iPhone, iPad menjalankan Safari mobile?

Biasanya cukup untuk memanggil .select() berfungsi pada <input ... /> elemen, tetapi ini tidak berfungsi pada perangkat tersebut. Kursor hanya tersisa di ujung entri yang ada tanpa pemilihan yang dibuat.


76
2017-07-17 15:24


asal


Jawaban:


setSelectionRange(0, 9999);

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


85
2018-06-10 05:54



Tidak ada di thread ini yang berhasil untuk saya, inilah yang berfungsi di iPad saya:

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

25
2017-09-15 19:43



Lihat biola ini: (masukkan beberapa teks di kotak input dan klik 'pilih teks')

Ini adalah memilih teks dalam kotak input di iPod saya (gen ke-5 iOS6.0.1), membuka keyboard dan juga menampilkan menu Potong / Salin / Saran ...

Menggunakan javascript biasa. Tidak mencoba ini dengan jQuery

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

Perhatikan bahwa angka 999 hanyalah sampel. Anda harus menetapkan angka-angka ini ke jumlah karakter yang ingin Anda pilih.

MEMPERBARUI:

  • iPod5 - iOS6.0.1 - Bekerja ok.
  • iPad1 - iOS5.1.1 - Hanya teks yang dipilih. Ketuk pilihan sekali untuk membuka menu Potong / Salin
  • iPad2 - iOS4.3.3 - Hanya teks yang dipilih. Ketuk pilihan sekali untuk membuka menu Potong / Salin

Untuk dua yang terakhir, Anda dapat bereksperimen dengan memicu peristiwa klik di input elemen

MEMPERBARUI: (07-10-2013)

  • iPod5 - iOS7.0.2 - Menggunakan biola di tautan: Tidak dapat melihat teks yang diketik di kotak input.                   Menekan pilih redirect saya ke facebook.com (??? wtf ???)                   tidak tahu apa yang terjadi di sana.

MEMPERBARUI: (14-11-2013)

  • iOS 7.0.3: Terima kasih atas komentar dari binki perbarui bahwa                    .selectionStart dan .selectionEnd  tidak kerja.

MEMPERBARUI: (15-01-2015)

  • iOS 8.x.x: Terima kasih atas komentar dari Michael Siebert. Diambil dari komentar:                   Saya harus mendengarkan untuk kedua fokus DAN klik peristiwa dan kemudian setTimeout / _. Debounce                   untuk membuatnya berfungsi dalam kedua kasus: klik masukan atau fokus melalui tabbing

23
2017-12-07 10:26



Sulit untuk membuktikan negatif, tetapi penelitian saya menunjukkan ini adalah bug di Mobile Safari.

Perhatikan bahwa fokus () berfungsi, kurang lebih — meskipun itu bisa memerlukan lebih dari satu ketukan untuk berhasil, dan itu tidak perlu jika Anda mencoba untuk menanggapi keran pengguna di bidang tersebut karena keran itu sendiri akan memberikan bidang fokus. Sayangnya, pilih () aku s tidak berfungsi di Safari Seluler.

Taruhan terbaik Anda mungkin adalah laporan bug apel.


22
2017-08-30 09:39



Maaf, di posting saya sebelumnya, saya tidak melihat Javascript menyiratkan bahwa Anda menginginkan jawaban di Javascript.

Untuk mendapatkan apa yang Anda inginkan UIWebView dengan javascriptSaya telah berhasil mengumpulkan dua bagian penting dari info untuk membuatnya bekerja. Tidak yakin tentang browser seluler.

  1. element.setSelectionRange(0,9999); melakukan apa yang kami inginkan

  2. Acara mouseUp adalah membatalkan pilihan

Jadi (menggunakan Prototype):     

    input.observe ('fokus', fungsi () {
      this.setSelectionRange (0, 9999);
    });
    input.observe ('mouseup', function (event) {
      event.stop ();
    });

melakukan triknya.

Matt


7
2017-07-25 08:03



Sepertinya fokus akan berfungsi tetapi hanya ketika dipanggil langsung dari acara asli. Memanggil fokus menggunakan sesuatu seperti SetTimeout tidak muncul memanggil keyboard. Kontrol keyboard ios sangat buruk. Ini bukan situasi yang baik.


3
2018-03-22 03:02



Sesuatu seperti yang berikut ini bekerja untuk saya untuk saya di Webkit yang disertakan dengan Android 2.2:

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

Lihat Chromium Terbitkan 32865.


1
2018-01-20 04:14



Dengan iOS 7 di iPad, satu-satunya cara saya dapat membuat karya ini adalah benar-benar digunakan <textarea></textarea> dari pada <input> bidang.

misalnya

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

Cara mencegah pengguna mengubah area teks di dalam lebih sulit, karena Anda membuat teks hanya bisa membaca, maka trik pemilihan tidak akan berfungsi lagi.


1
2018-02-05 16:01



Saya jadi gila mencari solusi ini, sementara semua tanggapan Anda memang membantu itu membuka kaleng cacing lain untukku.

Klien menginginkan pengguna untuk dapat klik dan pilih semua, dan juga biarkan pengguna 'tab' dan pilih semua di iPad (dengan keyboard eksternal. Saya tahu, gila ...)

Solusi saya untuk masalah ini adalah, mengatur ulang acara. Pertama Fokus, kemudian Klik, kemudian touchstart.

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

Saya harap ini membantu seseorang, karena Anda banyak telah membantu saya berkali-kali.


0
2017-11-02 15:32



Jika Anda menggunakan browser yang sesuai dengan HTML5, Anda dapat menggunakannya placeholder="xxx" di dalam kamu input menandai. Itu harus melakukan pekerjaan itu.


-4
2018-06-05 09:02