2011-10-30 29 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

相关问题