Bagaimana Anda secara terprogram memilih teks dari bidang input pada perangkat iOS, misalnya iPhone, iPad yang menjalankan Safari seluler?
Biasanya cukup memanggil .select()
fungsi pada <input ... />
elemen, tetapi ini tidak berfungsi pada perangkat tersebut. Kursor ditinggalkan begitu saja di akhir entri yang ada tanpa pemilihan yang dilakukan.
Jawaban:
input.setSelectionRange(0, 9999);
https://developer.mozilla.org/en/DOM/Input.select
sumber
.focus()
masukan sebelum memohoninput.setSelectionRange
. Jika Anda mendengarkanfocus
acara di input, ingatlah untuk memperhitungkan loop tak terbatas.readonly
set atribut.setSelectionRange()
dalamfocus
penangan berfungsi saat Anda memicu secara.focus()
terprogram, tetapi saat Anda mengetuk secara manual input teks di iOS, pemilihan tidak terjadi. Cukup dikatakan, yang perlu Anda lakukan adalah memanggilsetSelectionRange()
dalam setTimeout 0 dan berfungsi seperti yang diharapkan, apa pun yang memicu fokus.Tidak ada di utas ini yang berfungsi untuk saya, inilah yang berfungsi di iPad saya:
// t is the input field setTimeout(function() { t.setSelectionRange(0, 9999); }, 1);
sumber
Sulit untuk membuktikan negatif, tetapi penelitian saya menunjukkan bahwa ini adalah bug di Safari Seluler.
Perhatikan bahwa fokus () berfungsi, lebih atau kurang — meskipun bisa memerlukan lebih dari satu ketukan agar berhasil, dan itu tidak perlu jika Anda mencoba menanggapi ketukan pengguna pada bidang yang dimaksud karena ketukan itu sendiri akan memberikan bidang tersebut fokus. Sayangnya, pilih () adalah hanya non-fungsional di Mobile Safari.
Taruhan terbaik Anda mungkin laporan bug dengan Apple .
sumber
Lihat biola ini : (masukkan beberapa teks di kotak input dan klik 'pilih teks')
Itu memilih teks di kotak input di iPod saya (generasi ke-5 iOS6.0.1), membuka keyboard dan juga menampilkan menu Potong / Salin / Sarankan ...
Menggunakan javascript biasa. Tidak mencoba ini dengan jQuery
document.getElementById("p1").selectionStart = 0 document.getElementById("p1").selectionEnd = 999
Perhatikan bahwa angka 999 hanyalah contoh. Anda harus mengatur angka-angka ini ke jumlah karakter yang ingin Anda pilih.
MEMPERBARUI:
Untuk dua yang terakhir, Anda mungkin bereksperimen dengan memicu peristiwa klik pada
input
elemenUPDATE: (07-10-2013)
PEMBARUAN: (14-11-2013)
.selectionStart
dan.selectionEnd
tidak bekerja.UPDATE: (15-01-2015)
sumber
<input/>
, iPad mengira saya mengetuk di panel "CSS" jsfiddle (di mana apa pun yang saya ketik tidak terlihat). Setelah saya mendapatkan ketukan saya diarahkan ke yang benar<input/>
, tombol "pilih teks" Anda berfungsi dengan baik di iOS-7.0.3 :-).Maaf, di posting saya sebelumnya, saya tidak melihat Javascript yang menyiratkan bahwa Anda menginginkan jawaban dalam Javascript.
Untuk mendapatkan apa yang Anda inginkan di UIWebView dengan javascript , saya telah berhasil mengumpulkan dua informasi penting untuk membuatnya berfungsi. Tidak yakin dengan browser seluler.
element.setSelectionRange(0,9999);
melakukan apa yang kita inginkanPeristiwa mouseUp membatalkan pemilihan
Jadi (menggunakan Prototipe):
berhasil.
Matt
sumber
$("input").focus(function () { this.setSelectionRange(0, 9999); return false; } ).mouseup( function () { return false; });
focusin
alih-alih fokus agar ini berfungsi, iOS 7Sepertinya fokus akan berfungsi tetapi hanya jika dipanggil langsung dari peristiwa asli. memanggil fokus menggunakan sesuatu seperti SetTimeout tidak muncul panggil keyboard. Kontrol keyboard ios sangat buruk. Ini bukan situasi yang bagus.
sumber
Sesuatu seperti berikut ini bekerja untuk saya pada Webkit yang hadir dengan Android 2.2:
function trySelect(el) { setTimeout(function() { try { el.select(); } catch (e) { } }, 0); }
Lihat Masalah Chromium 32865 .
sumber
Dengan iOS 7 di iPad, satu-satunya cara saya dapat membuat ini bekerja adalah dengan menggunakan
<textarea></textarea>
alih-alih<input>
lapangan.misalnya
<textarea onclick="this.setSelectionRange(0, 9999);">My text will be selected when textarea is clicked.</textarea>
Cara mencegah pengguna mengubah teks di dalam area lebih sulit, karena jika Anda membuat area teks hanya baca, trik pemilihan tidak akan berfungsi lagi.
sumber
Saya menjadi gila mencari solusi ini, sementara semua tanggapan Anda benar-benar membantunya membuka kaleng cacing lain untuk saya.
Klien menginginkan pengguna untuk dapat mengklik dan memilih semua , dan juga membiarkan pengguna 'tab' dan memilih semua di iPad (dengan keyboard eksternal. Saya tahu, gila ...)
Solusi saya untuk masalah ini adalah, mengatur ulang acara. Fokus Pertama , lalu Klik , lalu sentuh mulai .
$('#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.
sumber
Jika Anda menggunakan browser yang mendukung HTML5, Anda dapat menggunakannya
placeholder="xxx"
diinput
tag Anda . Itu seharusnya melakukan pekerjaan itu.sumber