Làm thế nào tôi có thể làm cho nó như vậy khi bạn nhấp vào bên trong một vùng văn bản, toàn bộ nội dung của nó được chọn?
Và cuối cùng khi bạn nhấp lại, để bỏ chọn nó.
Làm thế nào tôi có thể làm cho nó như vậy khi bạn nhấp vào bên trong một vùng văn bản, toàn bộ nội dung của nó được chọn?
Và cuối cùng khi bạn nhấp lại, để bỏ chọn nó.
Câu trả lời:
Để ngăn người dùng khỏi khó chịu khi toàn bộ văn bản được chọn mỗi khi họ cố gắng di chuyển dấu mũ bằng chuột, bạn nên thực hiện việc này bằng cách sử dụng focus
sự kiện chứ không phải click
sự kiện. Sau đây sẽ thực hiện công việc và khắc phục sự cố trong Chrome để ngăn phiên bản đơn giản nhất (nghĩa là chỉ gọi select()
phương thức của textarea trong focus
trình xử lý sự kiện) hoạt động.
jsFiddle: http://jsfiddle.net/NM62A/
Mã số:
<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>
Phiên bản 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
vào textarea - giải pháp khác của bạn hoạt động cho cả hai trường hợp :)
$("#foo").mouseup(function() {
$("#foo").unbind("mouseup");
return false;
});
bạn cần tham khảo hộp văn bản mà không cần sử dụng this
chỉ giới thiệu với đường dẫn đầy đủ .. và nó sẽ hoạt động ..
Cách tốt hơn, với giải pháp cho vấn đề tab và chrome và cách jquery mới
$("#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;
});
}
});
Tôi đã kết thúc bằng cách sử dụng này:
$('.selectAll').toggle(function() {
$(this).select();
}, function() {
$(this).unselect();
});
readonly
thuộc tính sau đó.
$('textarea').focus(function() {
this.select();
}).mouseup(function() {
return false;
});
Phiên bản jQuery ngắn hơn một chút:
$('your-element').focus(function(e) {
e.target.select();
jQuery(e.target).one('mouseup', function(e) {
e.preventDefault();
});
});
Nó xử lý trường hợp góc Chrome chính xác. Xem http://jsfiddle.net/Ztyx/XMkwm/ để biết ví dụ.
Chọn văn bản trong một yếu tố (gần giống với tô sáng bằng chuột của bạn)
:)
Sử dụng câu trả lời được chấp nhận trên bài đăng đó, bạn có thể gọi hàm như thế này:
$(function() {
$('#textareaId').click(function() {
SelectText('#textareaId');
});
});
$(this).select()
, tôi sẽ sử dụng nó vì nó ít mã hơn :)