Javascript 焦点删除文本突出显示

Javascript focus remove text highlight

本文关键字:显示 文本 焦点 删除 Javascript      更新时间:2023-09-26

我在更新面板中有一个输入(文本字段),每次更改文本后它都会自动回发。我可以将焦点放在相同的文本字段上,但我无法摆脱调用 document.getElementById('myTextField').focus() 后出现的文本 higlight。这个解决方案似乎是最准确的:

if (window.getSelection) {
    window.getSelection().removeAllRanges();
} else if (document.selection) {
    document.selection.empty();
}

但它有一个问题。输入保持专注,但我无法编写文本。在写作之前,我必须单击它。

如果您在焦点后重置值,即

.HTML

<input id="myTextField" type="text" value="SomeValue" />​

.JS

var myInput=document.getElementById('myTextField');
var myInput_value=myInput.value;
myInput.focus();
myInput.value=myInput_value;​

工作示例。

我认为

理想的解决方案不涉及取消设置和重置输入的值。这可能会产生不必要的副作用。在我看来,这是移动插入符号的正确方法:

var input = document.getElementById('inputElement');
input.focus();
if(input.setSelectionRange) {
  input.setSelectionRange(input.value.length, input.value.length);
} else {
  var range = input.createTextRange();
  range.moveStart('character', input.value.length);
  range.moveEnd('character', input.value.length);
  range.select();
}