Beim Schreiben von innerHTML werden die Event-Handler (und damit auch der focus) mit überschrieben. Du brauchst daher einfach einen Timeout, bis das DOM aktualisiert ist. Verwende window.setTimeout oder, wenn Du ganz präzise sein willst, prüfe in einer Timeout-Schleife, ob das DOM bereits fertig aktualisiert wurde.
Gruß, LX
Das erstere war auch meine Idee gewesen, da das aber nicht funktierte dachte ich wäre woanders dran liegen.
// Fokus auf neue Artikelnummer setzen
function setnewfocus()
{
document.req_pos.itm_new.focus();
}
.............
xhr_chg_req_pos.onreadystatechange = function()
{
if(xhr_chg_req_pos.readyState == 4)
{
if(xhr_chg_req_pos.status == 200)
{
document.getElementById("req_pos").innerHTML = xhr_chg_req_pos.responseText;
xhr_changeval.open('GET', "/ajax/req/fetch_val.php?comp_id=" + comp_id + "&req_id=" + req_id + "&sub_id=" + sub_id, true);
xhr_changeval.send();
window.setTimeout("setnewfocus();", 10000);
}
else
{
document.getElementById("req_pos").innerHTML = "Error:" + xhr_chg_req_pos.responseText;
}
};
}
Geht also so auch net, es sein denn ich packte in die setnewfocus wieder ein Alert vor dem Setzen des Fokuses ein.
Ich denke die ganze Zeit das ich was nahezu offensichtliches übersehe, komme aber aktuell nicht drauf.