8

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

不断出现的解决方案只是

this.value = this.value

我已经用一个简单的方法onclick尝试了这个:

function InputClicked(element) {
    element.className = "inputfocused";
    element.value = element.value;
}

但奇怪的是这个,它似乎走到了结尾,然后跳到了文本框的开头。

4

3 回答 3

14

您必须聚焦元素并设置插入符号位置

这个JSFiddle向您展示了它是如何工作的。本例中为了简单起见使用了 jQuery,但如果需要,可以完全省略它。setSelectionRange无论如何,函数是一个DOM函数。

一般来说,它会这样做:

input.focus();
input.setSelectionRange(inputValueLength, inputValueLength);

可以使用 DOM 功能或使用库函数(如在 jQuery 中)获得输入及其值长度。

我们需要输入值长度吗?

我没有在其他浏览器中测试过,但在 Chrome 中运行它允许设置比实际位置更大的位置,并且插入符号将定位在最后。所以像:

input.setSelectionRange(1000,1000);

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

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

于 2012-08-08T08:55:08.470 回答
5

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

代码:

function moveCaretToEnd(el) {
    el.focus();
    if (typeof el.selectionStart == "number") {
        el.selectionStart = el.selectionEnd = el.value.length;
    } else if (typeof el.createTextRange != "undefined") {
        var range = el.createTextRange();
        range.collapse(false);
        range.select();
    }
}
于 2012-08-08T09:11:30.187 回答
2

简单且工作 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);
于 2015-11-14T06:18:37.153 回答