Gibt es eine Funktion in Javascript, um die Auswahl des gesamten ausgewählten Textes aufzuheben? Ich denke, es muss eine einfache globale Funktion sein document.body.deselectAll();
oder so.
Gibt es eine Funktion in Javascript, um die Auswahl des gesamten ausgewählten Textes aufzuheben? Ich denke, es muss eine einfache globale Funktion sein document.body.deselectAll();
oder so.
Antworten:
Versuche dies:
function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}
Dadurch wird eine Auswahl in regulären HTML-Inhalten in jedem wichtigen Browser gelöscht. Eine Auswahl in einer Texteingabe oder <textarea>
in Firefox wird nicht gelöscht.
removeAllRanges()
Methode funktioniert in allen aktuellen Browsern für Text in Absätzen oder ähnlichen Nicht-Formularfeldelementen. Für Formularfelder (wie Textbereiche) funktioniert diese Methode in IE9 und FF5 nicht.
window.getSelection().removeAllRanges();
zuerst verwenden, da standardkonformer, proprietärer Code immer zuletzt ausgeführt werden sollte . Sei es der Code, der den Standards von 2004 oder 4004 entspricht, wird letztendlich immer das sein, was wir verwenden. Erkennen Sie ihn also ausnahmslos zuerst!
Hier ist eine Version, die jede Auswahl löscht, auch innerhalb von Texteingaben und Textbereichen:
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>
das mouseup
Ereignis nicht ausgelöst. Setzen Sie stattdessen den Mouseup-Handler auf das Dokument und es wäre in Ordnung: jsfiddle.net/SLQpM/23
Für Internet Explorer können Sie die leere Methode des document.selection-Objekts verwenden:
document.selection.empty ();
Eine browserübergreifende Lösung finden Sie in dieser Antwort:
document.selection.clear()
funktioniert nur im IE. Siehe hier: jsfiddle.net/9spL8/4 Auch diese Methode entfernt den markierten Text nicht einfach deaktivieren. Verwenden Sie document.selection.empty()
stattdessen , um die Auswahl des Texts aufzuheben.
Für ein textarea
Element mit mindestens 10 Zeichen wird im Folgenden eine kleine Auswahl getroffen und nach anderthalb Sekunden die Auswahl aufgehoben:
var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;
setTimeout(function()
{
t.selectionStart = 4;
t.selectionEnd = 4;
},1500);
Das hat für mich unglaublich einfacher geklappt ...
document.getSelection().collapseToEnd()
oder
document.getSelection().removeAllRanges()
Credits: https://riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected
window.getSelection().removeAllRanges();
in allen aktuellen Browsern funktioniert. Live-Demo: jsfiddle.net/hWMJT/1