我正在尝试通过此代码将输入文本的输入文本带到输入文本的开头但没有成功。有什么问题?
HTML<input value="text"/>
的JavaScript(jQuery的)
$('input').focus(function(){
$(this).delay(100).trigger(jQuery.Event("keydown",{keyCode: 36, which: 36}));
});
住在JSBin
答案 0 :(得分:3)
这看起来像是一个过度思考问题的案例,或者你没有正确描述它。焦点的默认行为是将光标放在文本的开头。就这样做:
$(function() {
$('input').delay(100).trigger('focus');
});
不确定为什么需要延迟。使用如图所示的jQuery ready事件,您可以消除延迟。
答案 1 :(得分:1)
所以,问题并不是真正按回家,而是将光标移动到我支持的texbox的开头。
检查此答案:move cursor to the beginning of the input field?
一般来说,这种方法是正确的,但它似乎没有直接起作用
我已修改它以适应焦点情况下的jQuery:
$('input').focus(function(){
var input = this;
// for some reason, putting directly doesn't work
setTimeout(function() {
if (input.createTextRange) {
var part = input.createTextRange();
part.moveat("character", 0);
part.moveEnd("character", 0);
part.select();
}
else if (input.setSelectionRange){
input.setSelectionRange(0,0);
}
}, 0);
});
实例:
http://jsfiddle.net/sF334/
如果你想自己触发焦点,那么你可以这样做:
$('input').trigger('focus');
// use some unique selector instead in real example, like ID
请注意,它会在焦点上的第一个角色之前返回,但允许您随后移动并更改选择,只要您更改焦点并返回,它将再次返回初始位置。