我有一个文本框,当我聚焦时,我希望光标移到文本框的末尾。
不断出现的解决方案只是
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;
}
但奇怪的是这个,它似乎走到了结尾,然后跳到了文本框的开头。
这个JSFiddle向您展示了它是如何工作的。本例中为了简单起见使用了 jQuery,但如果需要,可以完全省略它。setSelectionRange
无论如何,函数是一个DOM函数。
一般来说,它会这样做:
input.focus();
input.setSelectionRange(inputValueLength, inputValueLength);
可以使用 DOM 功能或使用库函数(如在 jQuery 中)获得输入及其值长度。
我没有在其他浏览器中测试过,但在 Chrome 中运行它允许设置比实际位置更大的位置,并且插入符号将定位在最后。所以像:
input.setSelectionRange(1000,1000);
将按预期工作(前提是您的文本少于 1000 个字符。:)
注意:IE8 及更早版本不支持此功能。大多数使用的浏览器的所有最新版本都支持它。对于旧版本的 IE,请使用文本范围。
您需要使用输入的selectionStart
andselectionEnd
属性或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();
}
}
简单且工作 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);