¿Existe una función en javascript para deseleccionar todo el texto seleccionado? Supongo que tiene que ser una función global simple como document.body.deselectAll();
o algo así.
¿Existe una función en javascript para deseleccionar todo el texto seleccionado? Supongo que tiene que ser una función global simple como document.body.deselectAll();
o algo así.
Respuestas:
Prueba esto:
function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}
Esto borrará una selección en el contenido HTML normal en cualquier navegador principal. No borrará una selección en una entrada de texto o <textarea>
en Firefox.
removeAllRanges()
método funciona en todos los navegadores actuales para texto dentro de párrafos o elementos similares que no son campos de formulario. Para campos de formulario (como textarea), este método no funciona en IE9 y FF5.
window.getSelection().removeAllRanges();
primero porque es compatible con los estándares, el código propietario siempre debe ejecutarse en último lugar . Ya sea en el año 2004 o en el año 4004, el código que cumple con los estándares siempre será lo que usamos en última instancia, ¡así que detectelo primero sin excepción!
Aquí hay una versión que borrará cualquier selección, incluso dentro de las entradas de texto y las áreas de texto:
Demostración: 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>
, el mouseup
evento no se activa. En su lugar, coloque el controlador del mouseup en el documento y estaría bien: jsfiddle.net/SLQpM/23
Para Internet Explorer, puede utilizar el método vacío del objeto document.selection:
document.selection.empty ();
Para una solución de varios navegadores, consulte esta respuesta:
document.selection.clear()
funciona en IE. Vea aquí: jsfiddle.net/9spL8/4 Además, este método eliminará el texto seleccionado, no solo lo deseleccionará. Para anular la selección del texto, utilice en su lugar. document.selection.empty()
Para un textarea
elemento con al menos 10 caracteres, lo siguiente hará una pequeña selección y luego, después de un segundo y medio, lo deseleccionará:
var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;
setTimeout(function()
{
t.selectionStart = 4;
t.selectionEnd = 4;
},1500);
Esto funcionó increíblemente más fácil para mí ...
document.getSelection().collapseToEnd()
o
document.getSelection().removeAllRanges()
Créditos: https://riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected
window.getSelection().removeAllRanges();
funciona en todos los navegadores actuales. Demostración en vivo: jsfiddle.net/hWMJT/1