Mine funktioner går i selvsving..
Jeg har følgende formular og et dertil hørende javascript til validering.Mit problem er at funktionerne går i selvsving. Hvis f.eks. man undlader at indtaste et fornavn og går videre til feltet efternavn, så vil check_fnavn() forsøge at give fnavn fokus, men det vil check_enavn() ikke acceptere, da den mister fokus uden indhold. De to alerts vises derfor på skift, og brugeren kan ikke komme ud af den \"onde cirkel\" ... hvordan kommer jeg uden om det?
<form action=\"<?php echo $PHP_SELF?>\" method=\"post\" name=\"opret_ny\">
Fornavn:<input class=\"field\" type=\"text\" name=\"fnavn\" size=\"20\" maxlength=\"20\" tabindex=\"1\" onBlur=\"check_fnavn(this.form)\">
Efternavn:<input type=\"text\" name=\"enavn\" size=\"20\" maxlength=\"30\" tabindex=\"2\" onBlur=\"check_enavn(this.form
Email:<input class=\"field\" type=\"text\" name=\"email\" size=\"20\" maxlength=\"20\" tabindex=\"3\" onBlur=\"check_email(this.form)\">
BrugerID:<input class=\"field\" type=\"text\" name=\"brugerID\" size=\"8\" maxlength=\"8\" tabindex=\"3\" onBlur=\"check_brugerID(this.form)\">
<input type=\"submit\" name=\"submit\" \"tabindex=\"5\" value=\"OK\">
<input type=\"hidden\" name=\"formnumber\" value=\"ny\">
</form>
<SCRIPT language=JavaScript1.2>
function check_fnavn(f) {
var x = f.fnavn.value
if (!x) {
f.fnavn.focus();
alert(\"Du skal indtaste dit fornavn\");
return false;
}
else if (x) {
var x = x + \"q\";
if (trim(x) == \"q\") {
f.fnavn.focus();
alert(\"Du skal indtaste dit fornavn\");
}
return false;
}
else {
return true;
}
}
function check_enavn(f) {
var x = f.enavn.value
if (!x) {
f.enavn.focus();
alert(\"Du skal indtaste dit efternavn\");
return false;
}
else if (x) {
var x = x + \"q\";
if (trim(x) == \"q\") {
f.enavn.focus();
alert(\"Du skal indtaste dit efternavn\");
}
return false;
}
else {
return true;
}
}
function check_email(f) {
var x = f.email.value
if (!x) {
f.email.focus();
alert(\"Du skal indtaste din email adresse\");
return false;
}
else if (x) {
var pattern = new RegExp(/^[a-zA-Z0-9]+@astongroup.com$/);
var tjek = x.match( pattern );
if (!tjek) {
f.email.focus();
alert(\"Du skal indtaste en valid email adresse (*@astongroup.com)\");
return false;
}
else {
return true;
}
}
}
function check_brugerID(f) {
var x = f.brugerID.value
if (!x) {
f.brugerID.focus();
alert(\"Du skal indtaste et brugerID\");
return false;
}
else if (x) {
var pattern = new RegExp(\"^[a-zA-Z0-9]{3,8}$\");
var tjek = x.match( pattern );
if (!tjek) {
f.brugerID.focus();
alert(\"Du skal indtaste et brugerID bestående af mindst 3 tal og/eller bogstaver\");
return false;
}
else {
return true;
}
}
}
function check_all(f) {
if (check_fnavn(f) ||
check_enavn(f) ||
check_email(f) ||
check_brugerID(f)) {
return true;
}
else {
history.go(-1);
return false;
}
}
function ltrim( s ) {
var lpatt = new RegExp( \"^ *(.*)$\" );
var parse = s.match( lpatt );
return parse[1];
}
function rtrim( s ) {
var rpatt = new RegExp( \"^(.*[^ ]) *$\" );
var parse = s.match( rpatt );
return parse[1];
}
function trim (string) {
trimboth = ltrim( rtrim( string ) );
return trimboth;
}
</SCRIPT>
