オートコンプリートを作成したい場合は、オートコンプリートリストを "@"と入力します。テキストエリアのカーソル位置の上にテキスト入力を配置する(javascript、Textarea autcompleting)
私はjQueryUIオートコンプリートを使用していますが、私の解決策(http://jsfiddle.net/aUfrz/22/)の唯一の問題は、オートコンプリート可能なテキスト入力をテキストエリアのカーソル位置の上に配置する必要があり、ここで
はJSFiddleにあります私のJSです:
$(document.body).on('keypress', 'textarea', function(e) {
var names = [
"johnny",
"susie",
"bobby",
"seth"
],
$this=$(this),
char = String.fromCharCode(e.which);
if(char == '@') {
console.log('@ sign pressed');
var input=$('<input style="position:relative; top:0px; left:0px;background:none;border:1px solid red" id="atSign" >');
$this.parent().append(input);
input.focus();
input.autocomplete({
source: names,
select: function (event, ui) {
console.log('value selected'+ui.item.value);
//$this.val('@'+ui.item.value);
$this.insertAtCaret(ui.item.value);
$this.focus();
input.remove();
} //select
}); //autocomplete
} //if
}); // keypress
HTML:
<textarea></textarea>
私はここに私が選択したオートコンプリートの提案を挿入するために使用jQueryプラグインを示していないていることに注意してくださいキャレット位置:insertAtCaret()
私はこれで見つけましたother SO question。
あなたはキャレットのピクセルを取得したいわけ座標を入力し、そこに入力を配置しますか?キャレットのピクセル座標を取得することが可能かどうかはわかりません。 –
は1つの解決策のようですが、なぜこれらの座標を取得できないのですか? –
この情報は一般的には必要ではないため、DOMを通じてアクセスできるようになっていないためです。各文字のピクセル幅にキャレットの文字オフセットを掛けて、テキストエリア内のキャレットのピクセルオフセットを取得することができます。 –