Esiste una funzione in javascript per deselezionare tutto il testo selezionato? Immagino che debba essere una semplice funzione globale come document.body.deselectAll();o qualcosa del genere.
Esiste una funzione in javascript per deselezionare tutto il testo selezionato? Immagino che debba essere una semplice funzione globale come document.body.deselectAll();o qualcosa del genere.
Risposte:
Prova questo:
function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}
Ciò cancellerà una selezione nel normale contenuto HTML in qualsiasi browser principale. Non cancellerà una selezione in un input di testo o <textarea>in Firefox.
removeAllRanges()metodo funziona in tutti i browser correnti per il testo all'interno di paragrafi o elementi simili non di campo. Per i campi modulo (come textarea), questo metodo non funziona in IE9 e FF5.
window.getSelection().removeAllRanges(); primo perché è conforme agli standard, il codice proprietario dovrebbe essere sempre eseguito per ultimo . Che si tratti del 2004 o del 4004, il codice conforme agli standard sarà sempre quello che utilizziamo, quindi rilevalo prima senza eccezioni!
Ecco una versione che cancellerà qualsiasi selezione, anche all'interno di input di testo e aree di testo:
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>l' mouseupevento non si attiva. Metti invece il gestore del mouseup sul documento e andrebbe bene: jsfiddle.net/SLQpM/23
Per Internet Explorer, puoi utilizzare il metodo vuoto dell'oggetto document.selection:
document.selection.empty ();
Per una soluzione cross-browser, vedi questa risposta:
document.selection.clear()funziona solo in IE. Vedi qui: jsfiddle.net/9spL8/4 Inoltre, questo metodo rimuoverà il testo selezionato, non solo lo deselezionerà. Per deselezionare semplicemente il testo, usa document.selection.empty()invece.
Per un textareaelemento con almeno 10 caratteri il seguente farà una piccola selezione e poi dopo un secondo e mezzo lo deselezionerà:
var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;
setTimeout(function()
{
t.selectionStart = 4;
t.selectionEnd = 4;
},1500);
Questo ha funzionato incredibilmente più facilmente per me ...
document.getSelection().collapseToEnd()
o
document.getSelection().removeAllRanges()
Crediti: https://riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected
window.getSelection().removeAllRanges();funziona in tutti i browser attuali. Demo dal vivo: jsfiddle.net/hWMJT/1