Avatar billede lgadex Nybegynder
31. maj 2002 - 10:47 Der 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;
}

function isDigit(c){
    return ((c >= "0") && (c <= "9"))
}
</script>
</head>
<body>
<form name="form" method="get" action="nextfile.asp"  onSubmit="validate();">
Felt1:<input type="text" name="felt1" size="10">
Felt 2:<input type="text" name="felt2" size="10">
<input type="submit" name="Action" value="Submit">
</form>
</body>
</html>
Avatar billede senj Nybegynder
31. maj 2002 - 10:54 #1
Har ændret en smule:

<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;
}

function isDigit(c){
    return ((c >= "0") && (c <= "9"))
}
</script>
</head>
<body>
<form name="form" method="get" action="nextfile.asp">
Felt1:<input type="text" name="felt1" size="10">
Felt 2:<input type="text" name="felt2" size="10">
<input type="button" name="Action" value="Submit" onclick="java script:validate()">
</form>
</body>
</html>
Avatar billede gizmo-gizmo Nybegynder
31. maj 2002 - 10:54 #2
<form name="form" method="get" action="nextfile.asp"  onSubmit="validate(); return false;">

måske...
Avatar billede ras2000 Nybegynder
31. maj 2002 - 10:57 #3
<form name="form" method="get" action="nextfile.asp"  onSubmit="validate();"> skal ændre til
<form name="form" method="get" action="nextfile.asp"  onSubmit="return validate();">
Avatar billede senj Nybegynder
31. maj 2002 - 10:58 #4
Fokus sætter du sædan:

document.form.felt1.focus();
document.form.felt1.select();

Den første havde du med!
Avatar billede ras2000 Nybegynder
31. maj 2002 - 10:59 #5
...og det er jeg sikker på.
Avatar billede jakoba Nybegynder
31. maj 2002 - 11:02 #6
i din <form kommando skal det være  return validate() for at få videresendt det true eller false funktionen returnerer

<form name="form" method="get" action="nextfile.asp"  onSubmit="return validate();">

og sidst i funktionen validate() skal der så stå
      return true; // alt OK, send den.
istedet for linien
      document.form.submit();

mvh JakobA
Avatar billede jakoba Nybegynder
31. maj 2002 - 11:04 #7
Men gismo's virker nu også. (hvis du beholder linien  document.form.submit(); )
Avatar billede lgadex Nybegynder
31. maj 2002 - 11:21 #8
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester