jQuery'.focus()'表现得不像我期望的那样

时间:2013-03-13 00:01:03

标签: javascript jquery google-chrome

所以我编写了一些简单的PHP“合并标签”,用于表单。我希望他们能够“点击”输入文本框。

我有一些基本代码,“有效”。它将合并标签放入并重新复制框 - 但是它将光标放在您键入的任何内容之后,但是在所有合并标记的前面?

如果我输入:

[Howdy ]

然后点击{firstname},我得到:

[Howdy {firstname}]

太棒了!

但光标在“你好”和{firstname}之间,如此:

[Howdy |{firstname}]

我有一个very simple fiddle set up来展示问题所在。我一直在尝试一起使用.val().focus()

2 个答案:

答案 0 :(得分:5)

selectionStart属性设置为当前selectionStart的总和以及要添加的字符串的长度。

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

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

答案 1 :(得分:2)

<强> jsFiddle Demo

只需像这样调整文本区域的selectionStart变量:

$('#test')[0].selectionStart = $('#test').val().length;