我正在尝试将光标设置在具有焦点功能的文本字段中。我做了一些研究,但提供的解决方案似乎都不适用于谷歌浏览器。在Internet Explorer和Firefox中,此解决方案正常运行:
js:
$('#Search').focus(function() {
var SearchInput = $('#Search');
var strLength= SearchInput.val().length;
SearchInput.focus();
SearchInput[0].setSelectionRange(strLength, strLength);
});
HTML:
<input type="text" id="Search" value="Hello World" />
这是指向jsfiddle的链接。
有没有什么方法可以在谷歌浏览器中使用它?
答案 0 :(得分:19)
在聚焦输入时放置光标之前似乎会触发焦点事件,一个hacky解决方法就是使用setTimeout,如下所示:
$('#Search').focus(function() {
setTimeout((function(el) {
var strLength = el.value.length;
return function() {
if(el.setSelectionRange !== undefined) {
el.setSelectionRange(strLength, strLength);
} else {
$(el).val(el.value);
}
}}(this)), 0);
});
试试这个小提琴: http://jsfiddle.net/esnvh/26/
编辑为0ms超时,因为@SparK指出这足以推送到执行队列的末尾。
答案 1 :(得分:6)
更新了代码
参考:http://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
IE浏览器上的 setSelectionRange
is not supported,Opera&amp; Safari浏览器
我建议您制作类似的内容(适用于IE,Chrome,Safari,Firefox)。
$('#Search').on('mouseup', function() {
var element = $(this)[0];
if (this.setSelectionRange) {
var len = $(this).val().length * 2;
element.setSelectionRange(len, len);
}
else {
$(this).val($(this).val());
$(this).focus();
}
element.scrollTop = 9999;
});
答案 2 :(得分:4)
使用mouseup事件:
$("#Search").mouseup(function () {
this.setSelectionRange(this.value.length, this.value.length);
});
答案 3 :(得分:1)
仅供参考,目前输入的数字不支持mydiv
,因此快速解决方案是只使用setSelectionRange()
选择文字。在桌面浏览器上,这会突出显示文本,在移动设备上,这会将光标直接移动到文本的末尾。
答案 4 :(得分:0)
没有jQuery:)
HashMaps