目前的情况是什么:
我已经在所有浏览器中成功完成了这项工作(不要问,愚蠢的功能请求):
查看工作JSfiddle demo here(实现此btw有不同的可能性)。
HTML 的
<input id="test" value="Something" />
JS
function moveCaretToEnd(el) {
if (typeof el.selectionStart == "number") {
el.selectionStart = el.selectionEnd = el.value.length;
} else if (typeof el.createTextRange != "undefined") {
el.focus();
var range = el.createTextRange();
range.collapse(false);
range.select();
}
}
var textarea = document.getElementById("test");
textarea.onfocus = function() {
moveCaretToEnd(this);
// Work around Chrome's little problem
textarea.onmouseup = function() {
// Prevent further mouseup intervention
moveCaretToEnd(this);
textarea.onmouseup = null;
return false;
};
};
我想要达到的目标以及阻止的内容:
当输入字段的内容比输入字段本身更大时,这在 Chrome 35 中不再有效,因为Chrome没有&#34;滚动&#34;到内容的结尾。众所周知,Chrome在输入字段和JS方面存在问题(这就是Chrome解决方法的原因,但它仍然无法正常工作)。它在Firefox 30中完美运行。我希望在内容大于输入字段时也可以使用它。
问题
为什么这在上述情况下不起作用?可能的解决办法也很不错。
答案 0 :(得分:0)
我想我解决了这个问题(快速和肮脏)。请参阅full JSFiddle here。
HTML 的
<input value="1111111111111111111111111222222222" id="test" />
JS
var elem = document.getElementById('test');
elem.focus();
elem.value = "1111111111111111111111111222222222";
elem.scrollLeft = elem.scrollWidth;