.focus() im Mozilla / Netscape
Carlo
- javascript
Hi,
ich habe da ein kleines Problem mit der focus Funktion unter Netscape und Mozilla.
Folgender Quelltextauszug:
<script language="JavaScript">
<!--
function calValidateStunde(obj) {
with (obj) {
if (value < 0 || value > 23 || !value.match(/^(\d+)$/)) {
alert("Bitte geben Sie eine Zahl zwischen 0 und 23 ein");
focus();
select();
return false;
}
}
return true;
}
//-->
</script>
<form action="formularXY.php" method="post" name="calendar">
<input name="stunde" type="text" onBlur="return calValidateStunde(this)" value="<?=$stunde?>" size="3" maxlength="2">:
</form>
Also unter IE6 prüft er die eingabe ab und setzt bei einem Fehler den focus wieder in das Feld, markiert den Inhalt und gibt mir die Alertmessage aus.
Im Mozilla 1.1 und Netscape 6.2 Prüft er das Feld ab und bei einem Fehler kommt die alert Box aber der focus wird nicht gesetzt.
Ist das ein bekannter Fehler oder muss ich die focusfunktion im netscape anders aufrufen? Oder kann der Netscape/Mozilla das einfach nicht?
Vielen Dank schonmal,
Carlo
Hallo,
ich fass mich kurz:
<input name="stunde" type="text" onBlur="return calValidateStunde(this)" value="<?=$stunde?>" size="3" maxlength="2">:
^^^^^^
das mag er nicht
Es muss so heißen (getestet: Mozilla 1.1beta/Linux):
<input name="stunde" type="text" onBlur="calValidateStunde(this); return true;" value="<?=$stunde?>" size="3" maxlength="2">:
Sonst denkt Mozilla, er müsse den OnBlur Event abbrechen (wegen return false) und spinnt.
Noch etwas: Dir ist klar, dass die Formularüberprüfung _auch_ auf dem Server erfolgen muss (Du kannst Dich nicht auf JS verlassen - es kann nur eine "Benutzerfreundlichkeit sein")?
Grüße,
Christian
Hi,
vielen Dank für die Antwort. Doch leider klappt auch dies weder in meinem Mozilla 1.1 (Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826) noch in meinem Netscape 6.2.3 (Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3).
Er ignoriert die focus und die select Anweisung völlig!ich habe das Gefühl das er bei der alertBox das onBlur abbricht. Kann das sein?
mfg
Carlo
Hallo,
vielen Dank für die Antwort. Doch leider klappt auch dies weder in meinem Mozilla 1.1 (Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826) noch in meinem Netscape 6.2.3 (Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3).
Er ignoriert die focus und die select Anweisung völlig!ich habe das Gefühl das er bei der alertBox das onBlur abbricht. Kann das sein?
Eigentlich nicht. Ich poste jetzt einfach mal den Quellcode der HTML-File, die ich zum testen verwendet habe (mit dem Composer editiert, daher sieht sie so aus *g*), vielleicht hilft Dir das weiter. Wenn die auch nicht klappt, dann hast Du einen Bug in Mozilla/Windows gefunden (und einen nicht zu kleinen):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test</title>
<meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1">
</head>
<body>
<script language="JavaScript">
<!--
function calValidateStunde(obj) {
with (obj) {
if (value < 0 || value > 23 || !value.match(/^(\d+)$/)) {
alert("Bitte geben Sie eine Zahl zwischen 0 und 23 ein");
focus();
select();
return false;
}
}
return true;
}
//-->
</script>
<form method="post" name="calendar"><input name="stunde" type="text"
onblur="calValidateStunde(this); return true;" value="" size="3"
maxlength="2">: </form>
</body>
</html>
Grüße,
Christian