光标在<textarea>中的位置

时间:2017-03-06 13:43:53

标签: html

&lt; p&gt;我有这样的代码......&lt; / p&gt; &lt; p&gt;&lt; div class =“snippet”data-lang =“js”data-hide =“false”data-console =“true”data-babel =“false”&gt; &lt; div class =“snippet-code”&gt; &lt; pre class =“snippet-code-html lang-html prettyprint-override”&gt;&lt; code&gt;&lt; textarea name =“message”id =“body”rows =“15”cols =“45”&gt; 回复: 嗨,您好。你收到我的留言了吗? &LT; / textarea的&GT;&LT; /代码&GT;&LT; /预&GT; &LT; / DIV&GT; &LT; / DIV&GT; &LT; / p为H. &lt; p&gt;我希望光标自动定位在左上角,但由于&lt; code&gt;&lt; textarea&gt;&lt; / code&gt;之间的空格/文字。标签,它位于底部右侧。&lt; / p&gt; &lt; p&gt;是否有一些javascript或某些东西可以强制光标到我想要的位置?&lt; / p&gt;

2 个答案:

答案 0 :(得分:1)

<script type="text/javascript">    
    var txtarea = document.getElementById("body");
    txtarea.selectionEnd = 0;
</script>

编辑: 试试这个:

$("#body").focus(function() {
    $(this).prop("selectionEnd", 0);
});

答案 1 :(得分:0)

我编辑了整个答案。我想我现在正确地理解了你的问题,并找到了解决方案。

该代码适用于Chrome和Opera,但不适用于Firefox,IE和Edge。 我发现this solution关于如何将插入符号放在textarea中的任何位置,现在它可以在上面提到的浏览器中使用您的示例(避免在11以下测试IE)。

小提琴:https://jsfiddle.net/bume1up1/2/

我从上面的SO链接复制的javascript:

function setSelectionRange(input, selectionStart, selectionEnd) {
  if (input.setSelectionRange) {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}

function setCaretToPos (input, pos) {
  setSelectionRange(input, pos, pos);
}

setCaretToPos(document.getElementById("body"), 0);

在某些浏览器中,默认情况下textarea会处于焦点状态,在Firefox中你必须在框中标记,但光标位置仍然在顶部。