重複の可能性:
テキストエリアでキャレットの位置を取得するには?
html textarea コントロールの任意の場所に * と入力すると、 のようなキーアップ イベントで現在の位置を取得する必要があり"Welcome* to jQuery"
ます。だから私は * ウェルカムの後に8番目の位置を意味します。誰かがこれについて私を助けることができるかどうか教えてください.
重複の可能性:
テキストエリアでキャレットの位置を取得するには?
html textarea コントロールの任意の場所に * と入力すると、 のようなキーアップ イベントで現在の位置を取得する必要があり"Welcome* to jQuery"
ます。だから私は * ウェルカムの後に8番目の位置を意味します。誰かがこれについて私を助けることができるかどうか教えてください.
これは機能します。(注: 引用符付きの場合は 8 で、そうでない場合は 7 です)
$("#tf").on('keyup', function(){
console.log($(this).val().indexOf('*'));
});
http://jsfiddle.net/Vandeplas/hc6ZH/
更新:複数*のソリューション
$("#tf").on('keyup', function(){
var pos = [],
lastOc = 0,
p = $(this).val().indexOf('*',lastOc);
while( p !== -1){
pos.push(p);
lastOc = p +1;
p = $(this).val().indexOf('*',lastOc);
}
console.log(pos);
});
http://jsfiddle.net/Vandeplas/hc6ZH/1/
更新:入力した * char の位置のみを指定する
(function ($, undefined) {
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
})(jQuery);
$("#tf").on('keypress', function(e){
var key = String.fromCharCode(e.which);
if(key === '*') {
var position = $(this).getCursorPosition();
console.log(position);
} else {
return false;
}
});