Есть ли в javascript функция для отмены выделения всего выделенного текста? Я полагаю, это должна быть простая глобальная функция, вроде как document.body.deselectAll();
.
Есть ли в javascript функция для отмены выделения всего выделенного текста? Я полагаю, это должна быть простая глобальная функция, вроде как document.body.deselectAll();
.
Ответы:
Попробуй это:
function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}
Это очистит выделение в обычном HTML-содержимом в любом крупном браузере. Он не очистит выделение во вводе текста или <textarea>
в Firefox.
removeAllRanges()
метод работает во всех современных браузерах для текста внутри абзацев или подобных элементов без формы поля. Для полей формы (например, textarea) этот метод не работает в IE9 и FF5.
window.getSelection().removeAllRanges();
первым, потому что соответствующий стандартам проприетарный код всегда должен выполняться последним . Будь то код, соответствующий стандартам 2004 года или 4004, в конечном итоге всегда будет тем, чем мы пользуемся, поэтому сначала определите его без исключения!
Вот версия, которая очистит любой выбор, в том числе в текстовых полях и текстовых областях:
Демо: 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>
то mouseup
событие не срабатывает. Вместо этого поместите обработчик mouseup в документ, и все будет хорошо: jsfiddle.net/SLQpM/23
Для Internet Explorer вы можете использовать пустой метод объекта document.selection:
document.selection.empty ();
Для кросс-браузерного решения см. Этот ответ:
document.selection.clear()
работает только в IE. См. Здесь: jsfiddle.net/9spL8/4 Кроме того, этот метод удалит выделенный текст, а не просто отменит его выбор. Чтобы просто отменить выделение текста, используйте document.selection.empty()
вместо него.
Для textarea
элемента, содержащего не менее 10 символов, следующий элемент сделает небольшой выбор, а затем через полторы секунды отменит выбор:
var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;
setTimeout(function()
{
t.selectionStart = 4;
t.selectionEnd = 4;
},1500);
Для меня это сработало невероятно проще ...
document.getSelection().collapseToEnd()
или
document.getSelection().removeAllRanges()
Кредиты: https://riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected
window.getSelection().removeAllRanges();
работает во всех текущих браузерах. Живая демонстрация: jsfiddle.net/hWMJT/1