在javascript中将光标放在文本框的末尾

在javascript中将光标放在文本框的末尾,javascript,html,Javascript,Html,我有一个文本框,当我聚焦时,我希望光标转到文本框的末尾 不断出现的解决方案只是 this.value = this.value 我已经用一个简单的方法onclick尝试过: function InputClicked(element) { element.className = "inputfocused"; element.value = element.value; } 但奇怪的是,它似乎走到了文本框的末尾,然后跳到了文本框的开头。您必须聚焦元素并设置插入符号位置 这向您

我有一个文本框,当我聚焦时,我希望光标转到文本框的末尾

不断出现的解决方案只是

this.value = this.value
我已经用一个简单的方法onclick尝试过:

function InputClicked(element) {
    element.className = "inputfocused";
    element.value = element.value;
}
但奇怪的是,它似乎走到了文本框的末尾,然后跳到了文本框的开头。

您必须聚焦元素并设置插入符号位置 这向您展示了它是如何工作的。本例中使用jQuery是为了简单,但如果愿意,可以完全忽略它
setSelectionRange
函数无论如何都是DOM函数

一般来说,它是这样做的:

input.focus();
input.setSelectionRange(inputValueLength, inputValueLength);
可以使用DOM功能或库函数(如jQuery)获取输入及其值长度

我们需要输入值长度吗? 我还没有在其他浏览器中测试过,但在Chrome中运行时,它允许设置一个比实际位置更大的位置,插入符号将放在最后。比如:

input.setSelectionRange(1000,1000);
将按预期工作(前提是您的文本少于1000个字符。:)

注意:IE8及更早版本不支持此功能。所有最新版本的浏览器都支持它。对于旧版本的IE,请使用文本范围


您需要使用输入的
selectionStart
selectionEnd
属性或
setSelectionRange()
方法移动插入符号。但是IE<9不支持这些,所以您需要在这些浏览器中使用输入的方法

代码:


简单实用100%

1.Focus
2.Take the value
3.Empty It
4.Put the value back 



        $("#catg_name").focus();
        var value = $("#catg_name").val();
        $("#catg_name").val('');
        $("#catg_name").val(value);

这在IE 8及更低版本中不起作用,因为它不支持
setSelectionRange()
@TimDown:这是真的。让我在上面记下这件事。
1.Focus
2.Take the value
3.Empty It
4.Put the value back 



        $("#catg_name").focus();
        var value = $("#catg_name").val();
        $("#catg_name").val('');
        $("#catg_name").val(value);