Hallo,
bei Eingabe eines oder mehrerer Zeichen in ein inputFeld werden per Ajax mehrere Vorschlagswerte geholt und unter dem Eingabefeld angezeigt.
Da die Javascript-Routine für mehrere Felder und sogar mehrere Formulare gedacht ist, muss ich bei der ersten Nutzung das Anzeige-Feld positionieren. Damit erspare ich mir die Positionierung in den HTML-Formularen.
Doch das Anzeige-Feld wird zu weit rechts und zu weit unten platziert, als ob die Abstände doppelt berechnet werden. Aber ich komme nicht drauf, warum.
So sieht es aus:
Dazu die Positionierungs-Routine:
function zeigeVorschlaege()
{
// http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp
// The onreadystatechange event is triggered every time the readyState changes.
if ( request.readyState == 4 && request.status == 200 )
{
// vorschlagsfeld einmal initialisieren
if ( document.getElementById( id_sic+"_vorschlaege" ).style.left == 0 )
{
var left = 5;
var top = document.getElementById( id_sic ).offsetHeight;
var Eltern = document.getElementById( id_sic ).offsetParent;
while (Eltern)
{
if ( Eltern.style.position=="absolute" || Eltern.style.position=="relative" ) break;
left += Eltern.offsetLeft;
top += Eltern.offsetTop;
Eltern = Eltern.offsetParent;
}
document.getElementById( id_sic+"_vorschlaege" ).style.left = left+"px";
document.getElementById( id_sic+"_vorschlaege" ).style.minWidth
= document.getElementById( id_sic ).offsetWidth +"px";
document.getElementById( id_sic+"_vorschlaege" ).style.top = top+"px";
}
document.getElementById( id_sic+"_vorschlaege" ).innerHTML = request.responseText;
document.getElementById( id_sic+"_vorschlaege" ).style.display = "block";
}
//alert ("["+id_sic+"] width=["+document.getElementById( id_sic ).style.width+"]");
}
Linuchs