2011-10-30 13 views
19

特定のリンクがクリックされた後に入力フィールドにカーソルを置きたいとします。私はこれを小さな検索エンジンに使用しています。jQuery - リンクがクリックされたときに入力フィールドにカーソルを置く

入力フィールド:[]を想像してください。次に、デンマーク、イングランドなどのような文字列を入力フィールドに追加するいくつかのリンク。

私はこのように配置する必要があります: "デンマーク、[ここ]"。

これは可能ですか?

* UPDATE *

私はどのように「位置カーソルが」これで-trick追加し、テキストを置き換えるために、今、このコードを使用していますか?

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

複数のクリックでテキストを追加または置換しますか? –

+0

テキストを置き換えます。今使用しているテキストで質問を更新しました – skolind

+0

ブラウザの表示部分でキャレットを移動したい場合は、この回答をご覧ください:http://stackoverflow.com/question/7892902/javascri/single-html-text-field-with-javascri/7893633#7893633 –

答えて

23

selectionStartselectionEndプロパティを持つ入力ボックスにカーソルがどこにあるかを設定できます。テキストを選択したくない場合は、それらをお互いに等しくするだけです。ここで

は、あなたがそれを行う可能性があります方法は次のとおりです。

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

これはそれでした。それは素晴らしい!ありがとうチャーリー!:) – skolind

+0

これは私のためにモバイルサファリで動作していない、ニコラスModrzykの答えを使用しなければならなかった。 – Sebastian

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

ああ、あなたはすべてのテキストの後にするカーソルを必要としますか?ここをクリックしてください:jQuery Set Cursor Position in Text Areaこれは、テキストエリアではなく入力に対しても同じように動作します。

これは他のセレクタを使用する場合にも機能します。

33

はい、デフォルトのアクションを阻止し、フィールドに焦点を当てたアンカーのclickイベントをキャッチ。

関数コンテキストにはクリックされた要素が含まれているため、フォーカス呼び出しを適用するフィールドを計算できます。

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

    $(fieldSelector).focus() 

    return false; 
}) 
+0

質問を更新しました。テキストを置き換えるために、現在のコードにこのトリックをどのように追加しますか? – skolind

+2

これは行く方法です! – blackhawk

+0

これはモバイルサファリでも機能します。ありがとう! – Sebastian

関連する問題