有没有办法在TEXTAREA标签的末尾设置光标?我正在使用Firefox 3.6,我不需要它在IE或Chrome中工作。 JavaScript还可以,但似乎所有相关的答案都在这里使用onfocus()事件,这似乎没用,因为当用户点击textarea中的任何地方时,Firefox会将光标位置设置为那里。我有一个长文本显示在textarea中,以便显示最后一部分(最后更容易添加内容)。
答案 0 :(得分:16)
可能有很多方法,例如
element.focus();
element.setSelectionRange(element.value.length,element.value.length);
答案 1 :(得分:5)
自从我使用javascript而没有先查看jQuery解决方案已经很长时间了......
话虽这么说,使用javascript的最佳方法是抓住当前在textarea中的值,并将textarea的值设置为抓取的值。这总是在jQuery中起作用:
$('textarea').focus(function() {
var theVal = $(this).val();
$(this).val(theVal);
});
简单的javascript:
var theArea = document.getElementByName('[textareaname]');
theArea.onFocus = function(){
var theVal = theArea.value;
theArea.value = theVal;
}
我可能是错的。有点生锈。
答案 2 :(得分:3)
这是
的功能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();
}
}
答案 3 :(得分:2)
textarea.focus()
textarea.value+=' ';//adds a space at the end, scrolls it into view
答案 4 :(得分:1)
var t = /* get textbox element */ ;
t.onfocus = function () {
t.scrollTop = t.scrollHeight;
setTimeout(function(){
t.select();
t.selectionStart = t.selectionEnd;
}, 10);
}
技巧是使用setTimeout在浏览器完成处理焦点事件后更改文本插入(克拉)位置;否则,我们的脚本会设置位置,然后立即通过浏览器将其设置为其他位置。
答案 5 :(得分:1)
(this.jQuery || this.Zepto).fn.focusEnd = function () {
return this.each(function () {
var val = this.value;
this.focus();
this.value = '';
this.value = val;
});
};
答案 6 :(得分:0)
@Molle博士的答案是正确的。仅出于增强目的,U可以与prevent-default结合使用。
示例:
document.getElementById("textarea").addEventListener("mousedown", e => {
e.preventDefault();
moveToEnd(e.target);
});
function moveToEnd(element) {
element.focus();
element.setSelectionRange(element.value.length, element.value.length);
}
答案 7 :(得分:0)
selectionStart 足以设置初始光标点。
def userInput = input(id: 'Proceed1',
submitterParameter: 'submitter',
message: 'Do you want to approve this step ?',
parameters: [booleanParam(defaultValue: true, description:'',name: 'Please confirm you agree with this'])
println userInput.submitter