2013-03-13 70 views
2

所以我編寫了一些簡單的PHP「合併標籤」用於表單。我希望他們能夠'可點擊'輸入到文本框中。jQuery的'.focus()'表現得不像我所期望的那樣

我有一些基本的代碼,「工作」。它將合併標籤放入並重新調整框 - 但它會將光標置於您鍵入的任何內容之後,但位於所有合併標籤之前?

如果鍵入:

[Howdy ] 

,並點擊{firstname},我得到:

[Howdy {firstname}] 

這是偉大的!

但是光標之間的「你好」和{firstname}像這樣:

[Howdy |{firstname}] 

我有一個very simple fiddle set up向人們展示了問題是什麼。我一直在嘗試使用.val().focus()一起

+0

我相信這隻會影響瀏覽器。 – 2013-03-13 00:17:45

回答

5

設置selectionStart屬性設置爲當前selectionStart之和要添加的字符串的長度。

$("#test").prop('selectionStart', function (_, ss) { 
    return ss + mtag.length; 
});  

http://jsfiddle.net/ExplosionPIlls/GCpvy/1/

+0

有趣的是,我看不出使用Firefox的OP的jsFiddle有什麼不同。 – jtheman 2013-03-13 00:10:22

+0

@jtheman - 顯然根據Jacob VanScoy這是一個'鉻'問題。我使用Chrome 99%的時間。 爆炸藥丸 - 謝謝!它奇妙地工作! :d – Xhynk 2013-03-13 01:40:11

2

jsFiddle Demo

只要調整文本區的selectionStart變量是這樣的:

$('#test')[0].selectionStart = $('#test').val().length; 
相關問題