简体   繁体   English

以编程方式调用模糊时清除只读文本区域选择?

[英]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事件。

According to MDN , it is myTextArea.setSelectionRange(0, 0)根据MDN ,它是myTextArea.setSelectionRange(0, 0)

// (Text is selected in the textarea)
myTextArea.addEventListener("blur", () => {
    myTextArea.setSelectionRange(0, 0)
})
myTextArea.blur()

Example here这里的例子

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM