2011-07-14 11 views
1

入力の始めからカーソルまでの値を取る必要があります。 val()は文字列全体を返します。私はこの部分だけをどうすれば私が興味を持っていることができますか?カーソルの文字列の一部を取得

答えて

2

あなたはとても、キャレット位置を取得するためにselectionStartを使用することができます。

var caretpos = $('input').prop('selectionStart'); 
var value = $('input').val().substring(0, caretpos); 

http://jsfiddle.net/Zzkaw/

名前が示すように、実際に、selectionStartを選択するために使用されています。ただし、選択範囲がない場合はselectionStart === selectionEndとなり、値はキャレット位置を表します。

1

<input type="text">を扱っていて、改行の可能性がないとすると、次のように動作します。残念なことに、IE < 9には他のブラウザにあるとselectionEndのプロパティがありません。したがって、あなたはTextRangeですこぶる必要があります。

jsFiddle:http://jsfiddle.net/UcnCc/

コード:

function getTextToCaret(input) { 
    var caretPos = 0; 
    if (typeof input.selectionStart == "number") { 
     caretPos = input.selectionStart; 
    } else if (document.selection) { 
     input.focus(); 
     var textRange = input.createTextRange(); 
     var selRange = document.selection.createRange(); 
     textRange.setEndPoint("EndToStart", selRange); 
     caretPos = textRange.text.length; 
    } 
    return input.value.slice(0, caretPos); 
} 
関連する問題