如何在IE8及更早版本中使用JavaScript设置光标位置?

时间:2013-08-15 20:55:03

标签: javascript jquery internet-explorer

我需要设置输入的光标位置。我可以让它在Chrome中正常工作,但我在IE上遇到了麻烦。我发现IE9 / 10中的代码工作正常,但我找不到任何适用于IE8及更旧版本的代码。

这就是我对Chrome的支持:

var cursorPosition = 5;
var textArea = $('.the-input-I-Need');
textArea[0].selectionStart = cursorPosition;
textArea[0].selectionEnd = cursorPosition;
//now the cursor would be at the 5th spot in the input

任何人都知道为IE做这个的方法吗?我可以使用jQuery,但没有其他插件。

1 个答案:

答案 0 :(得分:2)

关于在这个问题上获取和设置IE中插入位置的问题: Get caret position in textarea (IE)

它还引用了实际获取插入位置的答案:How to get the start and end points of selection in text area?

有一些健康的代码专门用于处理IE,但它会完成你想要做的事情。请注意,getter函数返回一个选择范围,就像setter可用于设置选择范围一样。在这种情况下,您只需使用startOffset等于endOffset

来调用它
setSelection(el, startOffset, endOffset);

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