Existe uma função em javascript para apenas desmarcar todo o texto selecionado? Acho que deve ser uma função global simples como document.body.deselectAll();
ou algo assim.
Existe uma função em javascript para apenas desmarcar todo o texto selecionado? Acho que deve ser uma função global simples como document.body.deselectAll();
ou algo assim.
Respostas:
Experimente isto:
function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}
Isso limpará uma seleção no conteúdo HTML regular em qualquer navegador principal. Não limpará uma seleção em uma entrada de texto ou <textarea>
no Firefox.
removeAllRanges()
método funciona em todos os navegadores atuais para texto dentro de parágrafos ou elementos de campo não-formulário semelhantes. Para campos de formulário (como textarea), este método não funciona no IE9 e FF5.
window.getSelection().removeAllRanges();
primeiro porque é compatível com os padrões, o código proprietário deve sempre ser executado por último . Seja o ano de 2004 ou 4004, o código compatível com os padrões sempre será o que usamos, portanto, detecte-o primeiro, sem exceção!
Esta é uma versão que irá limpar qualquer seleção, incluindo entradas de texto e áreas de texto:
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>
, o mouseup
evento não dispara. Em vez disso, coloque o manipulador de mouseup no documento e não haverá problema: jsfiddle.net/SLQpM/23
Para o Internet Explorer, você pode usar o método vazio do objeto document.selection:
document.selection.empty ();
Para uma solução para vários navegadores, veja esta resposta:
document.selection.clear()
funciona apenas no IE. Veja aqui: jsfiddle.net/9spL8/4 Além disso, este método irá remover o texto selecionado, não apenas desmarcá-lo. Para apenas desmarcar o texto, use document.selection.empty()
.
Para um textarea
elemento com pelo menos 10 caracteres, o seguinte fará uma pequena seleção e, depois de um segundo e meio, desmarcará:
var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;
setTimeout(function()
{
t.selectionStart = 4;
t.selectionEnd = 4;
},1500);
Isso funcionou incrivelmente mais fácil para mim ...
document.getSelection().collapseToEnd()
ou
document.getSelection().removeAllRanges()
Créditos: https://riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected
window.getSelection().removeAllRanges();
funciona em todos os navegadores atuais. Demonstração ao vivo: jsfiddle.net/hWMJT/1