私がやろうとしているのは、名前がわからないかもしれませんが、テキストエリア内の予測ヘルプ入力者です。jquery オートコンプリートを使用しています。ユーザーが textarea (id=test) 内で '[[g ' と入力すると、オートコンプリート付きの入力 (id=example) が開かれるため、'data' で検索します。ユーザーが目的のデータを見つけたら、Shift+Enter を押してデータをテキストエリアに挿入し、']]' で閉じる必要があります。
入力をその近くに表示するキャレットの位置を見つけるにはどうすればよいですか?
私はキャレットのインデックスを見つけたくありませんが、xy絶対位置のようなものです。
あなたは私に何を提案しますか?
上記のコード:
<textarea onkeydown="predicao(this);" cols="40" rows="10" id="test" onfocus="this.focus()"></textarea>
<input id="example" style="display: none;" onkeyup="insert(this, event);"/>
<script language="Javascript">
<!--
function predicao(objeto){
comprimento = objeto.value.length;
var antipenultimo = comprimento - 4;
var input = objeto.value.substring(antipenultimo,comprimento);
var output = "";
for(i=0; i<input.length; ++i){
if(output != "") output += ", ";
output += input.charCodeAt(i);
}
if (output == "91, 91, 103, 32"){
var preditor = document.getElementById('example');
preditor.value = '';
preditor.style.display = 'block';
preditor.focus();
preditor.select();
}
}
function insert(objeto, evt){
var e = evt || event;
var code = e.keyCode || e.which;
if(e.shiftKey && code == '13') {
var texto = document.getElementById('test').value;
texto += objeto.value+']]';
document.getElementById('test').focus();
document.getElementById('test').value = texto;
objeto.style.display = 'none';
}
}
$(document).ready(function(){
var data = "Afrikaans Català Deutsch English Esperanto Suomi Français Galego Hrvatski Magyar Bahasa Indonesia Italiano Basa Jawa".split(" ");
$("#example").autocomplete(data);});
</script>