Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript焦点移除文本突出显示_Javascript_Asp.net_Focus_Highlight - Fatal编程技术网

Javascript焦点移除文本突出显示

Javascript焦点移除文本突出显示,javascript,asp.net,focus,highlight,Javascript,Asp.net,Focus,Highlight,我在更新面板中有一个输入(文本字段),它在每次文本更改后自动回写。我可以将焦点放在同一个文本字段上,但我无法摆脱调用document.getElementById('myTextField').focus()后出现的文本higlight。 这个解决方案似乎是最准确的: if (window.getSelection) { window.getSelection().removeAllRanges(); } else if (document.selection) { docume

我在更新面板中有一个输入(文本字段),它在每次文本更改后自动回写。我可以将焦点放在同一个文本字段上,但我无法摆脱调用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" />​

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

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();
}

更新为更跨浏览器的解决方案。
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();
}