[英]Clear readonly textarea selection when programmatically invoking blur?
I have a readonly textarea where text is programmatically added.我有一个只读文本区域,其中以编程方式添加文本。
When I invoke blur
on this element, any text that was selected in it remains selected.当我在这个元素上调用
blur
时,在其中选择的任何文本都保持选中状态。
Here's a demo:这是一个演示:
let ta = document.getElementById("ta") ta.value="SELECT ME THEN PRESS A KEY." ta,addEventListener("blur". () => { ta,setSelectionRange(0; 0) }). ta,addEventListener("keypress". () => { ta.blur() // <-- This should de-select text })
<textarea id="ta" readonly></textarea>
EDIT: Silly me, I'll fix this by invoking setSelectionRange
before blur
.编辑:愚蠢的我,我将通过在
blur
之前调用setSelectionRange
来解决这个问题。
ta.addEventListener("keypress", () => {
ta.setSelectionRange(0, 0)
ta.blur()
})
you should use setSelectionRange
method, like so:您应该使用
setSelectionRange
方法,如下所示:
myTextArea.addEventListener("blur", () => { myTextArea.setSelectionRange(0, 0); }); myTextArea.textContent = `myTextArea.addEventListener("blur", () => { myTextArea.setSelectionRange(0, 0) });`; myTextArea.addEventListener("keydown", () => { myTextArea.dispatchEvent(new FocusEvent('blur')); myTextArea.blur(); });
<textarea id="myTextArea" readonly></textarea>
added programatic blur
by key, also please note the keypress
event is deprecated , you should use keydown
instead.通过按键添加程序
blur
,还请注意keypress
事件已弃用,您应该使用keydown
代替。
also, it seems that in Chrome setSelectionRange
does not work when calling blur()
for a readonly
target, nevertheless the blur
happens, but it works for a programmatically dispatched blur
event on that target.此外,似乎在 Chrome 中,当为
readonly
目标调用blur()
时setSelectionRange
不起作用,但是会发生blur
,但它适用于在该目标上以编程方式调度的blur
事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.