2012-01-21 11 views
1

テキストを含む入力があります。この入力をクリックすると、テキストの色が変わります。入力には、例えば。テキスト「Hello buddy」 - 単語Helloの最後の入力をクリックすると、開始時に(Helloの前に)カーソルを設定する簡単な方法が存在しますか?テキストの変更と入力のカーソルの設定

$('#your_name').focus(function(){ 
    if($(this).val() == $(this).attr('title')){ 
     $(this).css('color', 'red'); 
    } 

    $(this).keyup(function() { 
     $(this).val(''); 
    }); 
}); 

そして、私はにテキストを入力して起動したときに、どのように私は、現在のテキストHello buddyを除去し、入力にのみ「新しい」というテキストを持つことができますか?私はkeyupメソッドでしようとしていますが、私が入力したものはすべて削除されます。

答えて

3

ここをクリックしてDEMOをご覧ください。また、あなたのjsFiddleを修正.. here

編集を参照してください:あなたはキャレット位置を設定するel.setSelectionRange(index, index);を使用することができます。

そして、あなたは、あなたが一度だけ実行されます.oneメソッドを使用することができます。keyUpイベント時にテキスト全体を削除する方法についてあなたの2番目の質問について

$(this).one('keydown', function() { 
     $(this).val(''); 
}); 
+0

入力をクリックすると、カーソルが開始位置にないので、入力キーに入力すると、キーを除くすべてが必要になります。 – user984621

+0

@ user984621:更新されたデモを参照してください。あなたのフィドルhttp://jsfiddle.net/N9agf/5/ –

+0

それは実際には明らかな部分を削除し、デモを使用しないでください(デモのコンソールを参照してください) – noob

1

あなたは取得するには、入力フィールドのselectionStartプロパティを使用することができますフィールドのvalueと一致させることで、これが「Hello」という単語の後ろにあるかどうかを確認することができます。 setSelectionRangeを使用して、キャレットをある位置に設定できます。 setSelectionRange(0,0);は最初に設定します。

編集:私はちょうどあなたの質問を再読し、あなただけのあなたは再びそれを入力すると、すべてのテキストを削除したい場合は、あなただけのフィールド内のすべてのテキストを選択するにはselect()を使用することができます。入力を開始すると、選択したテキストが削除されます。

+0

私は例を教えてください?私は '$(this).select();を試してみる。 $(this)).val( ''); 'しかし、これは正しい方法ではありません。 – user984621

+0

あなたがしたいことを理解できるように、生のサンプルをどこかに置いてください。 – timing

+0

[こちらはデモです](http://jsfiddle.net/N9agf/3/) - 入力のどこかをクリックすると、開始時にカーソルが必要になり、入力にクリックした場合などです。キー "a"上にあるので、 "a"以外のすべての入力を削除したいと思います – user984621

関連する問題