JavaScript と ajax を使用して、独自のオートコンプリート機能を作成しました。すべてうまくいっていますが、大きな問題が 1 つあります。位置付けです。現在、リストを次のように配置しています。
function ajaxautocomplete(elm)
{
lista.innerHTML="";
var x=getOffset(elm).left;
var y=getOffset(elm).top;
lista.style.position="absolute";
lista.style.left=(x+5)+"px";
lista.style.top=(y+25)+"px";
...
}
「lista」はオートコンプリート リストで、「elm」は現在のテキスト入力です。今、テキスト入力をセルとして含むテーブルがあり、このオートコンプリート機能が必要です。この配置は機能しますが、テーブルが十分に大きく、スクロールが必要な場合、ページを下にスクロールして下部のセルをオートコンプリートしようとすると、配置が機能しなくなり、リストがページの上部に表示されます、十分にスクロールすると画面の外に出るかもしれません。
ページをスクロールしているときでも、そのリストに動的に位置を割り当てる方法はありますか? ありがとうございました!
編集:言及するのを忘れていましたが、これは私の getOffset(elm) 関数です:
function getOffset( el ) {
var _x = 0;
var _y = 0;
while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
_x += el.offsetLeft - el.scrollLeft;
_y += el.offsetTop - el.scrollTop;
el = el.offsetParent;
}
return { top: _y, left: _x };
}