我想創建一個自動完成功能,如果輸入「@」,則會提供自動完成的名稱列表。在文本區域的光標位置上放置文本輸入(javascript,Textarea autocompleting)
我正在使用jQueryUI自動完成,唯一的問題與我的解決方案(http://jsfiddle.net/aUfrz/22/)是自動完成的文本輸入需要放在textarea光標位置的頂部,而不是目前的立場。
這裏是我的JS這是在的jsfiddle:
$(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。
你的意思是你想插入符號的像素座標,然後在那裏定位輸入?我不確定是否有可能獲得插入符號的像素座標。 –
似乎是一個解決方案,爲什麼我們不能得到這些座標? –
因爲這些信息通常是不需要的,因此通過DOM無法訪問。您可以嘗試將每個字符的像素寬度乘以插入符號的字符偏移量,以獲得textarea內插入符號的像素偏移量。 –