Avatar billede petan Nybegynder
20. april 2005 - 14:51 Der er 6 kommentarer og
1 løsning

history.go(-1) og husk værdier

Hej

I forbindelse med en formular hvor man kan taste forskellige oplysninger ind, har jeg to sider. Den første side indeholder min formular, og den næste side indeholder forskellige valideringsregler. Man ser aldrig side to hvis det man har indtastet ikke opfylder mine krav, da jeg bruger fremgangsmåden som ses nedenfor:

if ($input < 18 or $input > 120)
                {
                    echo "<script type=\"text/javascript\">alert(\"Indtast gyldig værdi!\");history.go(-1)</script>";
                    exit;
                }

Hvis man skriver forkert i et af felterne, og man bliver sendt retur, skal den gerne huske værdierne i de andre felter. Det virkede også fint på et tidspunkt, men nu sletter den de forskellige værdier.

Er der en måde jeg kan løse dette problem på?

Er der en smartere måde at lave validering på?
Avatar billede roenving Novice
21. april 2005 - 02:22 #1
Lav netop en javascript-validering før du poster siden (men det betyder selvfølgelig ikke, at du skal droppe din server-side validering !-)
Avatar billede petan Nybegynder
21. april 2005 - 09:15 #2
Hvordan gør jeg det - kan du evt. vise mig et eksempel?
Avatar billede roenving Novice
22. april 2005 - 16:04 #3
<script type="text/javascript">
function valider(f){
  if(!f.minInput.value.match(/^\d+$/) || +f.minInput.value < 18 || +f.minInput.value > 120 ){
    alert('Du skal være over 18 for at benytte dette site !-)');
    f.minInput.focus();
    return false;
  }
  return true;
}
</script>

<form action="..." method="post" onsubmit="return valider(this);">
<input type="text" name="minInput">
<input type="submit">
</form>
Avatar billede petan Nybegynder
26. april 2005 - 22:07 #4
roenving-> bliver det ikke valideret client-side istedet for server-side når man bruger den metode du viser?

Jeg har valgt at lave min validering vha. phpLib, som netop har lavet en klasse der kan anvendes til validerings af formularer. Se eksempel nedenfor:

<?php
include("oohforms.inc");

$myForm = new form;

//navn
$myForm->add_element(array("name"=>"name",
    "type"=>"text",
    "size"=>"20",
    "minlength"=>"4",
    "length_e"=>"Navn skal være mindst 4 anslag",
    "valid_e"=>"Navn kan ikke indholde numre!",
    "valid_regex"=>"^([a-zA-Z ])*$" ));

$myForm->add_element(array("name"=>"submit",
    "type"=>"submit",
    "value"=>"Send"));

$myForm->start('minform','','','','minform');

$myForm->show_element("name");
echo "<BR>";
$myForm->show_element("submit");

//tjek om formen er submittet
if (isset($submit))
{
    //tjek om der er fejl i data
    if ($err = $myForm->validate())
    {
        $myForm->load_defaults();
    }
    else
    {
        $myForm->load_defaults();
        $myForm->freeze();
        $err = "succes!";
    }
}


$myForm->finish();

?>
Avatar billede petan Nybegynder
26. april 2005 - 22:08 #5
lukker.
Avatar billede roenving Novice
27. april 2005 - 09:35 #6
Så får du jo netop ikke løst dit problem ...
Avatar billede petan Nybegynder
27. april 2005 - 10:07 #7
Jo, ved at bruge $myForm->load_defaults(); i tilfælde af at der er fejl, bibeholdes det brugeren har tastet!
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