Có chức năng nào trong javascript để chỉ bỏ chọn tất cả văn bản đã chọn không? Tôi nghĩ nó phải là một chức năng toàn cục đơn giản như document.body.deselectAll();
hoặc một cái gì đó.
Có chức năng nào trong javascript để chỉ bỏ chọn tất cả văn bản đã chọn không? Tôi nghĩ nó phải là một chức năng toàn cục đơn giản như document.body.deselectAll();
hoặc một cái gì đó.
Câu trả lời:
Thử cái này:
function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}
Thao tác này sẽ xóa một lựa chọn trong nội dung HTML thông thường trong bất kỳ trình duyệt chính nào. Nó sẽ không xóa lựa chọn trong đầu vào văn bản hoặc <textarea>
trong Firefox.
removeAllRanges()
phương pháp làm việc trong tất cả các trình duyệt hiện tại cho văn bản bên trong các đoạn văn hoặc các yếu tố phi-form-lĩnh vực tương tự. Đối với trường biểu mẫu (như textarea), phương pháp này không hoạt động trong IE9 và FF5.
window.getSelection().removeAllRanges();
trước vì nó tuân theo tiêu chuẩn, mã độc quyền nên luôn được thực thi sau cùng . Dù là năm 2004 hoặc mã tuân thủ tiêu chuẩn 4004 cuối cùng sẽ luôn là thứ chúng tôi sử dụng, vì vậy hãy phát hiện nó đầu tiên mà không có ngoại lệ!
Đây là một phiên bản sẽ xóa bất kỳ lựa chọn nào, bao gồm cả trong đầu vào văn bản và vùng văn bản:
Demo: http://jsfiddle.net/SLQpM/23/
function clearSelection() {
var sel;
if ( (sel = document.selection) && sel.empty ) {
sel.empty();
} else {
if (window.getSelection) {
window.getSelection().removeAllRanges();
}
var activeEl = document.activeElement;
if (activeEl) {
var tagName = activeEl.nodeName.toLowerCase();
if ( tagName == "textarea" ||
(tagName == "input" && activeEl.type == "text") ) {
// Collapse the selection to the end
activeEl.selectionStart = activeEl.selectionEnd;
}
}
}
}
<div>
thì mouseup
sự kiện sẽ không kích hoạt. Thay vào đó, hãy đặt trình xử lý mouseup vào tài liệu và nó sẽ ổn thôi: jsfiddle.net/SLQpM/23
Đối với Internet Explorer, bạn có thể sử dụng phương thức trống của đối tượng document.selection:
document.selection.empty ();
Đối với giải pháp trình duyệt chéo, hãy xem câu trả lời sau:
document.selection.clear()
hoạt động trên IE. Xem tại đây: jsfiddle.net/9spL8/4 Ngoài ra, phương pháp này sẽ loại bỏ văn bản đã chọn chứ không chỉ bỏ chọn nó. Để chỉ bỏ chọn văn bản, hãy sử dụng document.selection.empty()
thay thế.
Đối với textarea
phần tử có ít nhất 10 ký tự, phần tử sau sẽ thực hiện một lựa chọn nhỏ và sau đó sau một giây rưỡi bỏ chọn nó:
var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;
setTimeout(function()
{
t.selectionStart = 4;
t.selectionEnd = 4;
},1500);
Điều này làm việc cực kỳ dễ dàng hơn đối với tôi ...
document.getSelection().collapseToEnd()
hoặc là
document.getSelection().removeAllRanges()
Tín dụng: https://riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected
window.getSelection().removeAllRanges();
hoạt động trên tất cả các trình duyệt hiện tại. Bản demo trực tiếp: jsfiddle.net/hWMJT/1