Hallo,
das scheint eine generelle Sperre zu sein, um JavaScript-Missbrauch zu verhindern: Im blur-Handler kann man nicht die focus-Methode des Elements aufrufen, bei der der blur-Event passierte. Eigentlich logisch.
Du kannst das, wenn du unbedingt willst, umgehen, indem du focus etwas verzögert aufrufst. Gecko fällt der Zusammenhang zwischen blur und focus dann nicht mehr auf:
function onload () {
document.getElementById("feld1").onblur = test;
}
function test () {
if (this.value != '' || isNaN(this.value)) {
this.onblur = null;
alert("Fehler!");
var elem = this;
window.setTimeout(function () {
elem.focus();
elem.select();
elem.onblur = test;
}, 1);
}
}
<form action="">
<input type="text" name="feld1" id="feld1">
<input type="text" name="feld2">
</form>
Ob das so klug ist, ist natürlich zu bezweifeln. Ich würde die Formularüberprüfung nicht beim blur durchführen bzw. keinen automatischen focus() durchführen.
Mathias