【问题标题】:Javascript focus remove text highlightJavascript焦点删除文本突出显示
【发布时间】:2012-06-23 15:59:17
【问题描述】:

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

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

但它有一个问题。输入仍然集中,但我不能写文本。在写之前我必须点击它。

【问题讨论】:

    标签: javascript asp.net focus highlight


    【解决方案1】:

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

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

    【讨论】:

    • 更新了一个更跨浏览器的解决方案。
    【解决方案2】:

    如果你在焦点后重置你的值,你可以做到这一点,即

    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;​
    

    Working Example.

    【讨论】:

      猜你喜欢
      • 2016-01-17
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2011-12-25
      相关资源
      最近更新 更多