我試圖通過此代碼將輸入文本的開頭鍵入光標,但沒有成功。什麼是問題?在輸入焦點後觸發主頁按鈕
HTML<input value="text"/>
的JavaScript(jQuery的)
$('input').focus(function(){
$(this).delay(100).trigger(jQuery.Event("keydown",{keyCode: 36, which: 36}));
});
住在JSBin
我試圖通過此代碼將輸入文本的開頭鍵入光標,但沒有成功。什麼是問題?在輸入焦點後觸發主頁按鈕
HTML<input value="text"/>
的JavaScript(jQuery的)
$('input').focus(function(){
$(this).delay(100).trigger(jQuery.Event("keydown",{keyCode: 36, which: 36}));
});
住在JSBin
所以,這個問題並不是真的迫在眉睫,而是將光標移到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
注意它焦點的第一個字符前返回,但允許您只要您更改焦點回來移動,後來更改的選擇,如你所願,它會再次返回到初始位置。
這看起來像是過思考問題的情況下,或者沒有正確地描述它。焦點的默認行爲是將光標置於文本的開頭。只是這樣做:
$(function() {
$('input').delay(100).trigger('focus');
});
不知道爲什麼你需要延遲。使用所示的jQuery就緒事件可以消除延遲。
如果文本是空的,它會來到文本的開頭,因爲沒有其他位置,如果文本框中有文本,默認焦點行爲是選擇所有文本。如果在選擇所有文本時按Home鍵,則會將光標返回到第一個字符之前的位置。 – Meligy 2012-01-14 02:53:31
'setTimeout'是多餘的IMO – Mohsen 2012-01-14 21:32:36
出於某種原因,當我在jsfiddle中嘗試時,沒有它就無法正常工作。 – Meligy 2012-01-14 22:47:10