Hallo Thomas,
Dieses Rätsel, lieber Micha, werden wir wohl ganz einfach nicht lösen können.
Nein, aber man darf doch sicher nach Alternativen suchen ;) Select() hat Dir also nicht zugesagt? (ich kann es verstehen aber nur für den IE könnte ich mit leben)
Im Gegenteil: Wenn ich focus() mittels setTimeout verzögere, kann ich alle von Dir genannten Fehler reproduzieren.
Das ist doch die Idee - hätte ich auch drauf kommen sollen. Ich habe es probiert und muß sagen: Funktioniert super[tm].
Deine eigenständige Funktion benötigst Du nicht mehr, da Du ja enter() bereits den Wert übergibst. Ich habe daher am Ende dieser Funktion ein TimeOut von 0,5sek eingefügt und nun gehts auch im IE:
function enter(b)
{
a=document.forms[0].elements[b].value;
if (a>0&&a<10)
{
td[b]="<input type=\"text\" autocomplete=\"off\" id=\"form"+color[0]+"\" size=\"1\" maxLength=\"1\" value=\""+a+"\" onkeyup=\"javascript:enter("+b+");\">";
num[b]=a;
message="Number entered.";
show();
cursor(b);
}
else if (a=="")
{
td[b]="<input type=\"text\" autocomplete=\"off\" id=\"form"+color[0]+"\" size=\"1\" maxLength=\"1\" value=\"\" onkeyup=\"javascript:enter("+b+");\">";
num[b]=a;
message="Number cleared.";
show();
cursor(b);}
else
{
td[b]="<input type=\"text\" autocomplete=\"off\" id=\"form"+color[0]+"\" size=\"1\" maxLength=\"1\" value=\"\" onkeyup=\"javascript:enter("+b+");\">";
num[b]="";
message="Only numbers 1-9 allowed!";
show();
cursor(b);
}
window.setTimeout('document.forms[0].elements["'+b+'"].focus();', 500);
}
Warum? Nun - peinlich: weil ich nach wie vor ein Javascript-Dilettant bin.
Och, das würde ich nicht sagen, soviel besser bin ich sicher auch nicht - wenn man das überhaupt messen kann.
Meine beiden Spiele
www.mah-jongg.ch
www.mah-jongg.ch/sudoku
Mein eines Spiel: Tetris JavaScript...
document.getElementById("Id").innerHTML=var;
Das hatte ich auch am Anfang immer, bis es nicht mehr gehen wollte und ich mich mit "den anderen" mal befassen musste ;)
Und noch was - danke!
Keine Ursache!
Mit freundlichem Gruß
Micha