Bagaimana saya bisa membuatnya jadi ketika Anda mengklik di dalam textarea, seluruh kontennya akan dipilih?
Dan akhirnya ketika Anda mengklik lagi, untuk membatalkan pilihan.
Bagaimana saya bisa membuatnya jadi ketika Anda mengklik di dalam textarea, seluruh kontennya akan dipilih?
Dan akhirnya ketika Anda mengklik lagi, untuk membatalkan pilihan.
Jawaban:
Untuk menghentikan pengguna dari jengkel ketika seluruh teks dipilih setiap kali mereka mencoba untuk memindahkan tanda sisipan menggunakan tetikus mereka, Anda harus melakukan ini menggunakan focus
acara, bukan click
acara. Berikut ini akan melakukan pekerjaan dan mengatasi masalah di Chrome yang mencegah versi paling sederhana (yaitu hanya memanggil metode textarea select()
di focus
pengendali acara) agar tidak berfungsi.
jsFiddle: http://jsfiddle.net/NM62A/
Kode:
<textarea id="foo">Some text</textarea>
<script type="text/javascript">
var textBox = document.getElementById("foo");
textBox.onfocus = function() {
textBox.select();
// Work around Chrome's little problem
textBox.onmouseup = function() {
// Prevent further mouseup intervention
textBox.onmouseup = null;
return false;
};
};
</script>
versi jQuery:
$("#foo").focus(function() {
var $this = $(this);
$this.select();
// Work around Chrome's little problem
$this.mouseup(function() {
// Prevent further mouseup intervention
$this.unbind("mouseup");
return false;
});
});
tab
masuk ke textarea - solusi Anda yang lain berfungsi untuk kedua kasus :)
$("#foo").mouseup(function() {
$("#foo").unbind("mouseup");
return false;
});
Anda perlu merujuk kotak teks tanpa menggunakan this
hanya merujuknya dengan path lengkap .. dan itu akan bekerja ..
Cara yang lebih baik, dengan solusi untuk masalah tab dan chrome dan cara jquery baru
$("#element").on("focus keyup", function(e){
var keycode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
if(keycode === 9 || !keycode){
// Hacemos select
var $this = $(this);
$this.select();
// Para Chrome's que da problema
$this.on("mouseup", function() {
// Unbindeamos el mouseup
$this.off("mouseup");
return false;
});
}
});
Saya akhirnya menggunakan ini:
$('.selectAll').toggle(function() {
$(this).select();
}, function() {
$(this).unselect();
});
readonly
atribut itu.
$('textarea').focus(function() {
this.select();
}).mouseup(function() {
return false;
});
Versi jQuery yang sedikit lebih pendek:
$('your-element').focus(function(e) {
e.target.select();
jQuery(e.target).one('mouseup', function(e) {
e.preventDefault();
});
});
Ini menangani kasus sudut Chrome dengan benar. Lihat http://jsfiddle.net/Ztyx/XMkwm/ untuk contoh.
Memilih teks dalam suatu elemen (mirip dengan menyorot dengan mouse Anda)
:)
Dengan menggunakan jawaban yang diterima pada pos itu, Anda dapat memanggil fungsi seperti ini:
$(function() {
$('#textareaId').click(function() {
SelectText('#textareaId');
});
});
$(this).select()
, saya akan menggunakannya karena lebih sedikit kode :)