2010-03-14 104 views
3

我專注於一個輸入字段使用jQuery:關注輸入字段值

$("input:text").focus(); 

已經有在輸入字段中某些文本的價值。當我聚焦時,光標在最後一個字母后面閃爍,我將如何將光標放在第一個字母的前面?

回答

11

你可以使用這個小插件,我爲你創建(從this script修改):

jQuery.fn.setCaret = function (pos) { 
    var input = this[0]; 
    if (input.setSelectionRange) { 
     input.focus(); 
     input.setSelectionRange(pos, pos); 
    } else if (input.createTextRange) { 
     var range = input.createTextRange(); 
     range.collapse(true); 
     range.moveEnd('character', pos); 
     range.moveStart('character', pos); 
     range.select(); 
    } 
}; 
// usage: 
$('input:text').setCaret(0); 

演示:jsbin.com/iwetu3/2

+0

+ 1但你能解釋一下嗎? – 2010-03-14 14:54:21

+0

@D_N:它首先檢查input.setSelectionRange(除IE以外的每個瀏覽器使用的對象)是否可用。如果是,它將焦點放在字段上並將插入符號定位在指定位置。如果它不可用,它會檢查IE方法並使用它。 – moff 2010-03-14 15:05:31

+0

啊哈,想知道這是不是瀏覽器的東西。謝謝。 – 2010-03-15 00:45:34

1

添加selectionStart,使其更跨瀏覽

jQuery.fn.setCaret = function (pos) { 
    var input = this[0]; 
    if (input.setSelectionRange) { 
     input.focus(); 
     input.setSelectionRange(pos, pos); 
    } else if (input.createTextRange) { 
     var range = input.createTextRange(); 
     range.collapse(true); 
     range.moveEnd('character', pos); 
     range.moveStart('character', pos); 
     range.select(); 
    } else if(input.selectionStart){ 
     input.focus(); 
     input.selectionStart = pos; 
     input.selectionEnd = pos; 
    } 
}; 
// usage: 
$('input:text').setCaret(0);