JavaScript'te yalnızca tüm seçili metnin seçimini kaldırmak için bir işlev var mı? Sanırım basit bir küresel işlev document.body.deselectAll();
falan olmalı.
JavaScript'te yalnızca tüm seçili metnin seçimini kaldırmak için bir işlev var mı? Sanırım basit bir küresel işlev document.body.deselectAll();
falan olmalı.
Yanıtlar:
Bunu dene:
function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}
Bu, herhangi bir ana tarayıcıda normal HTML içeriğindeki bir seçimi temizleyecektir. Metin girişindeki veya <textarea>
Firefox'taki bir seçimi temizlemez .
removeAllRanges()
yöntemi paragraflar veya benzer olmayan form alan öğelerinin içindeki metin için geçerli tüm tarayıcılarda çalışır. Form alanları için (metin alanı gibi), bu yöntem IE9 ve FF5'te çalışmaz.
window.getSelection().removeAllRanges();
önce kullanın çünkü standartlara uygun, özel kod her zaman en son çalıştırılmalıdır . 2004 yılı veya 4004 standartlarına uygun kod her zaman bizim kullandığımız şey olacaktır, bu nedenle ilk önce istisnasız tespit edin!
Metin girişleri ve metin alanları dahil olmak üzere herhangi bir seçimi temizleyecek bir sürüm:
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
olay ateş yapmaz. Bunun yerine mouseup işleyicisini belgeye koyun ve sorun olmaz: jsfiddle.net/SLQpM/23
Internet Explorer için, document.selection nesnesinin boş yöntemini kullanabilirsiniz :
document.selection.empty ();
Tarayıcılar arası bir çözüm için şu yanıta bakın:
document.selection.clear()
çalışır . Buraya bakın: jsfiddle.net/9spL8/4 Ayrıca, bu yöntem sadece seçimi kaldırmakla kalmaz, seçilen metni de kaldırır . Metnin seçimini kaldırmak için bunun yerine kullanın. document.selection.empty()
textarea
En az 10 karakter içeren bir öğe için, aşağıdakiler küçük bir seçim yapacak ve ardından bir buçuk saniye sonra seçimi kaldıracaktır:
var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;
setTimeout(function()
{
t.selectionStart = 4;
t.selectionEnd = 4;
},1500);
Bu benim için inanılmaz derecede kolay çalıştı ...
document.getSelection().collapseToEnd()
veya
document.getSelection().removeAllRanges()
Krediler: https://riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected
window.getSelection().removeAllRanges();
mevcut tüm tarayıcılarda çalıştığını onaylayabilirim . Canlı tanıtım: jsfiddle.net/hWMJT/1