可能的重复:
将光标设置在文本框焦点上的长度为 14 https://stackoverflow.com/questions/1865563/set-cursor-at-a-length-of-14-onfocus-of-a-textbox
我可以在 Firefox 和 IE 中做到这一点。但由于某种原因,它在 Chrome 和 Safari 中不起作用:(
我只是使用下面的 onfocus 行
$('input:text').focus(
function(){
document.getElementById('id').setSelectionRange(0, 0);
});
有人可以告诉我如何在 Chrome 和 safari 中做类似的事情吗?
问题是 Chrome(我还没听说过 Safari 也这样做,但我会告诉你)在焦点事件触发后会终止选择,因此你需要添加一个计时器。以下内容改编自我在这里的回答:
切换到文本区域时如何将光标置于文本区域的文本末尾 https://stackoverflow.com/questions/6003300/how-to-place-cursor-at-end-of-text-in-textarea-when-tabbed-into/6003829#6003829
然而,这通常不是很好的可用性:它与用户的期望相反,并且删除了使用鼠标时的有用功能(即插入符号转到用户单击的位置)。你也许可以通过一些处理来解决这个问题mousedown
and mouseup
events.
现场演示:http://jsfiddle.net/timdown/z9DhX/1/ http://jsfiddle.net/timdown/z9DhX/1/
Code:
function moveCaretToStart(el) {
if (typeof el.selectionStart == "number") {
el.selectionStart = el.selectionEnd = 0;
} else if (typeof el.createTextRange != "undefined") {
el.focus();
var range = el.createTextRange();
range.collapse(true);
range.select();
}
}
var textBox = document.getElementById("id");
textBox.onfocus = function() {
moveCaretToStart(textBox);
// Work around Chrome's little problem
window.setTimeout(function() {
moveCaretToStart(textBox);
}, 1);
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)