使用javascript在文本区域内查找carret位置xy
我想做的是——也许我不知道名字——在一个文本区域内输入一个预测帮助。它使用jquery自动完成。当用户在textarea id=test中键入“[[g”时,会打开一个带有autocomplete的输入id=example,因此它会在“数据”中搜索。当用户找到所需数据时,他必须按Shif+Enter将数据插入textarea,并以“]]”结束 我如何找到卡雷特的位置,使输入显示在附近 我不想找到卡雷特的指数,而是像xy绝对位置一样的东西 你有什么建议吗 上述代码:使用javascript在文本区域内查找carret位置xy,javascript,position,prediction,Javascript,Position,Prediction,我想做的是——也许我不知道名字——在一个文本区域内输入一个预测帮助。它使用jquery自动完成。当用户在textarea id=test中键入“[[g”时,会打开一个带有autocomplete的输入id=example,因此它会在“数据”中搜索。当用户找到所需数据时,他必须按Shif+Enter将数据插入textarea,并以“]]”结束 我如何找到卡雷特的位置,使输入显示在附近 我不想找到卡雷特的指数,而是像xy绝对位置一样的东西 你有什么建议吗 上述代码: <textarea onk
<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>
比如:
var pos = $('textarea').caret(); // using caret plugin...
var lines = $('textarea').val().slice(0, pos).replace(/\t/g, ' ').split('\n');
var y = lines.length;
var x = lines[y-1].length;
适用于固定宽度字体。如果您希望仅通过JS执行此操作:
function doGetCaretPosition (ctrl) {
var CaretPos = 0; // IE Support
if (document.selection) {
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}
礼节:
演示:我在这里下载了所有的插入式插件。这个插件不工作。它返回的东西像是非法的意外标记。我在谷歌上找到了这个博客,但我不明白我怎么能使用它。我的想法是找到某个xy位置,为带有输入框的div容器提供一个左上方位置em px。