31. maj 2002 - 10:47Der er
7 kommentarer og 1 løsning
Min form submitter til næste side selv om validering fejler
jeg har en formular hvor jeg validerer om felterne er korrekt udfyldt og denne validering virker for så vidt godt nok. Jeg får en alert om at feltet ikke er udfyldt korrekt, men alligevel submittes formen til den næste side. Hvad skal jeg gøre for at få den til at blive på samme side og få onFocus til at virke korrekt?
<html> <head> <script language="JavaScript"> function validate(){
if (!(check_tom(document.form.felt1.value))){ alert('Please fill out the field "Felt1"!'); document.form.felt1.focus(); return false; }
if (!(isFloat(document.form.felt1.value))){ alert('Please fill out the field "Felt1" correct!'); document.form.felt1.focus(); return false; } if (!(check_tom(document.form.felt2.value))){ alert('Please fill out the field "Felt2"!'); document.form.felt2.focus(); return false; } if (!(isFloat(document.form.felt2.value))){ alert('Please fill out the field "Felt2" correct!'); document.form.felt2.focus(); return false; } return true; } // funktion der checker om et formularfelt er tomt function check_tom(text) { return (text.length > 0); } // funktion der kigger efter et gyldigt tal med US settings function isFloat(s){ var i; var seenDecimalPoint = false;
if (!check_tom(s)){ return false; } if (s == ".") { return false; }
// Search through string's characters one by one // until we find a non-numeric character. // When we do, return false; if we don't, return true.
for (i = 0; i < s.length; i++){ // Check that current character is number. var c = s.charAt(i);
if ((c == ".") && !seenDecimalPoint){ seenDecimalPoint = true; } else { if (!isDigit(c)){ return false; } } } // All characters are numbers. return true; }
<html> <head> <script language="JavaScript"> function validate(){ if (!(check_tom(document.form.felt1.value))){ alert('Please fill out the field "Felt1"!'); document.form.felt1.focus(); return false; } else if (!(isFloat(document.form.felt1.value))){ alert('Please fill out the field "Felt1" correct!'); document.form.felt1.focus(); return false; } else if (!(check_tom(document.form.felt2.value))){ alert('Please fill out the field "Felt2"!'); document.form.felt2.focus(); return false; } else if (!(isFloat(document.form.felt2.value))){ alert('Please fill out the field "Felt2" correct!'); document.form.felt2.focus(); return false; } else { document.form.submit(); } } // funktion der checker om et formularfelt er tomt function check_tom(text) { return (text.length > 0); } // funktion der kigger efter et gyldigt tal med US settings function isFloat(s){ var i; var seenDecimalPoint = false;
if (!check_tom(s)){ return false; } if (s == ".") { return false; }
// Search through string's characters one by one // until we find a non-numeric character. // When we do, return false; if we don't, return true.
for (i = 0; i < s.length; i++){ // Check that current character is number. var c = s.charAt(i);
if ((c == ".") && !seenDecimalPoint){ seenDecimalPoint = true; } else { if (!isDigit(c)){ return false; } } } // All characters are numbers. return true; }
ok - med fælles hjælp gik det ;-) Løsningen fra senj fik jeg ikke til at virke Løsningen fra Gizmo fik jeg ikke til at virke før jakoba hjalp med den rigtige kombination Løsningen fra jakoba virker også fint. Det er altid svært at være helt retfærdig med pointfordeling, når svarene er delvis brugbare, men da jakoba gav den korrekte kombination får han pointene.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.