2011-10-30 28 views
19

我想在點擊特定鏈接後將光標置於輸入框中。我使用這個小型搜索引擎。jQuery - 點擊鏈接時將光標放在輸入框中

想象一下輸入欄:[]。然後,一些鏈接添加一個字符串,如:丹麥,英格蘭等到輸入字段。

現在我需要將光標放置爲這樣:「丹麥,[這裏]」。

這可能嗎?

* UPDATE *

我使用這個代碼,現在替換的文本,你會如何添加「位置的光標」這個-trick?

$('#denmark').click(function(){  
    $('#searchBoxBig').val('Denmark, '); 
}); 
+0

你想多次點擊來追加或替換文本? –

+0

替換文本..我用我現在使用的文本更新了問題 – skolind

+0

如果您還想將插入符號移動到瀏覽器的可見部分,請查看此答案:http://stackoverflow.com/7892902/7892902/7893633 –

回答

23

您可以使用selectionStartselectionEnd屬性設置光標在輸入框中的位置。如果你不想要選擇任何文本,只要讓它們相等即可。

這裏是你將如何做到這一點:

var input = $("input"); 
input[0].selectionStart = input[0].selectionEnd = input.val().length; 
+0

沒關係,這是做到了。這很棒!謝謝查理!:) – skolind

+0

這對我來說並不適用於移動Safari,只好使用Nicolas Modrzyk的答案。 – Sebastian

2
$(":input[name=xxxx]").focus(); 

啊,你需要光標在其後的所有文本?看看這裏:jQuery Set Cursor Position in Text Area它對輸入而不是textarea的作用相同。

這也適用於如果您使用其他選擇器。

33

是,捉對錨單擊事件阻止默認的行動,並專注於該領域。

函數上下文包含已被單擊的元素,因此您可以計算應用焦點調用的字段。

$(anchorSelector).live("click", function(e) { 
    e.preventDefault(); 

    $(fieldSelector).focus() 

    return false; 
}) 
+0

我已經更新了這個問題,你會如何將這個技巧添加到我當前的代碼中來替換文本? – skolind

+2

這是要走的路! – blackhawk

+0

這也適用於移動探險!謝謝! – Sebastian

相關問題