我正在尝试在文本框中设置光标/插入符的位置,使其位于输入控件的文本内容的末尾。有很多这样做的例子。棘手的部分是如果文本超出文本框的宽度,我希望文本“滚动”到视图中,以便文本和插入符号的末尾可见。这正是这个问题的要求:
move caret to the end of a text input field AND make the end visible
这里列出的解决方案可以与Chrome以及可能的IE版本(9或更高版本)配合使用,但是使用IE 8解决方案不起作用;没有document.createEvent。我试图修改代码,以便我使用createEventObject& fireEvent:
window.setTimeout(function() {
e = document.createEventObject("KeyboardEvent");
e.keyCode = 35;
//textfield.fireEvent('onkeypress', e);
textBox.fireEvent('onkeydown', e);
textBox.fireEvent('onkeyup', e);
textBox.blur();
textBox.focus();
}, 2000);
但这并没有给出将文本末尾水平滚动到视图中所需的效果。有没有办法用IE 8做到这一点?
谢谢!
巴黎
编辑:最后,我使用了这个功能,它似乎适用于所有主流浏览器,基于我的测试。
scrollCaretIntoView: function(textField) {
if (textfield.selectionStart || textfield.selectionStart === 0) {
//For all browsers, except IE 8 and earlier
textfield.selectionStart = textfield.value.length;
textfield.selectionEnd = textfield.value.length;
textfield.blur(); // Webkit wake-up hack
textfield.focus();
} else if (document.selection) {
//IE8 and earlier specific code
textfield.focus();
var range = document.selection.createRange();
range.moveEnd('character', 0); //move 0 characters from current position
range.select();
}
}
答案 0 :(得分:1)
我想我找到了IE8的解决方案(我只在IE8中测试过它)。请参阅fiddle
这是一个JS代码:
var rng = text.createTextRange();
rng.moveEnd( 'textedit' );
rng.moveStart( 'textedit' );
rng.select();
rng.scrollIntoView();