Avatar billede kennith Nybegynder
01. september 2006 - 04:48 Der er 7 kommentarer og
1 løsning

validering af formfelter

Hej jeg skal lave en simpel email form, og jeg vil gerne have at der ved tryk på send bliver tjekket at alle felter er udfyldt. Der skal ikke valideres på indholdet udover at ingen felter må være tomme. Hvad er den bedste måde at gøre det på?

Kennith
Avatar billede jensgram Nybegynder
01. september 2006 - 07:26 #1
Den bedste måde er altid - efter min mening - BÅDE client- og serverside. Javascript til at validere på klienten og PHP/ASP bagved. Så er du sikret og den almindelige bruger vil få hurtig respons (da clientside valideringen udføres inden der sendes data)...

Men det er jo bare min mening ;)

- Jens
Avatar billede kennith Nybegynder
02. september 2006 - 17:57 #2
OK det lyder jo meget fornuftigt. Nedenfor er et udsnit af min form kunne du lige supplere med et eksempel på hvordan jeg skriver det ind, så skal du få nogle point og så klarer jeg nok selv at få det på de øvrige felter.

<TABLE width="350" border="0" cellspacing="0" cellpadding="0">
<TR>
<TD width="89" height="35" valign="top"><P>Navn:</TD>
<TD colspan="3" valign="top"><input type="Text" size="34" name="navn" value=""></TD>
</TR>
<TR>
<TD height="25" colspan="4" valign="top"><P>Nuværende adresse:</TD>
</TR>
<TR>
<TD><P>Gade:</TD>
<TD colspan="3"><input type="Text" size="34" name="gade" value=""></TD>
</TR>
<TR>
<TD><P>Postnummer:</TD>
<TD width="58"><input type="Text" size="4" name="postnummer" value=""></TD>
<TD width="26"><P>By:</TD>
<TD><input type="Text" size="20" name="by" value=""></TD>
</TR>

På forhånd tak
Avatar billede jensgram Nybegynder
02. september 2006 - 18:58 #3
Jo, der er en fin lille guide her: http://www.htmlcodetutorial.com/forms/_FORM_onSubmit.html


Dit:

<form ...osv... onsubmit="return validateInput();">
<TABLE width="350" border="0" cellspacing="0" cellpadding="0" id="myForm">
<TR>
<TD width="89" height="35" valign="top"><P>Navn:</TD>
<TD colspan="3" valign="top"><input type="Text" size="34" name="navn" value=""></TD>
</TR>
<TR>
<TD height="25" colspan="4" valign="top"><P>Nuværende adresse:</TD>
</TR>
<TR>
<TD><P>Gade:</TD>
<TD colspan="3"><input type="Text" size="34" name="gade" value=""></TD>
</TR>
<TR>
<TD><P>Postnummer:</TD>
<TD width="58"><input type="Text" size="4" name="postnummer" value=""></TD>
<TD width="26"><P>By:</TD>
<TD><input type="Text" size="20" name="by" value=""></TD>
</TR>


Script:

function validateInput() {
    var f = document.getElementById('myForm');
    var r = true; // returværdi

    var pNum = parseInt(f.postnummer.value);
    if (pNum < 1000 || pNum > 9999) {
        r = false;
        alert("Postnummeret skal være et tal mellem 1000 og 9999.");
    }

    // Flere tests her...

    return r;
}
Avatar billede kennith Nybegynder
02. september 2006 - 20:06 #4
Hmm det kan jeg ikke lige få til at virke. Jeg prøver lige at rode lidt med det i nat, og tjekker dit link....

thx
Avatar billede kennith Nybegynder
03. september 2006 - 02:51 #5
Nå jeg bestemet mig for at jeg måtte tage mig sammen og se at lære lidt om det så jeg fandt nogle tutorials på nettet og har nu kodet noget andet det ser ud som følger

<!--

function focus()
{
  document.forms[0].navn.focus();
}

function checkform() //kontrolere at alle felter er udfyldt
{
    if (document.forms[0].navn.value == "")
    {alert("Du har ikke udfyldt navn.");
    document.forms[0].navn.focus();return(false)
    }

    if (document.forms[0].gade.value == "")
    {alert("Du har ikke udfyldt gade");
    document.forms[0].gade.focus();return(false)
    }

    if (document.forms[0].postnummer.value == "")
    {alert("Du har ikke udfyldt postnummer");
    document.forms[0].postnummer.focus();return(false)
    }
   
    if (document.forms[0].by.value == "")
    {alert("Du har ikke udfyldt by.");
    document.forms[0].by.focus();return(false)
    }

Det virker i hvertfald det er jo ikke nogen fantastisk validering men eneste krav var også at felterne ikke måtte være tomme så i første omgang så er det det. Desuden kan jeg godt lide den lille detalje med focus.

Men jeg er sikker på at det jens har skrevet også kunne have virket fint så¨smid lige et svar jens så skal du få nogle point
Avatar billede jensgram Nybegynder
03. september 2006 - 10:31 #6
Hmm - sidder lige og tænker på, om det skulle have været:

function validateInput() {
    var f = document.getElementById('myForm');
    var r = true; // returværdi

    var pNum = parseInt(f.elements['postnummer'].value);
    if (pNum < 1000 || pNum > 9999) {
        r = false;
        alert("Postnummeret skal være et tal mellem 1000 og 9999.");
    }

    // Flere tests her...

    return r;
}

i stedet (ændring i linie 5).

Du løste i princippet selv problemet, så tag de fleste points selv.

- Jens
Avatar billede kennith Nybegynder
03. september 2006 - 23:33 #7
*S* det er så sjældent jeg bruger dem efterhånden og jer er sikker på du havde hjulpet mig med at få det til at virke hvis det var så du får dem nu alle sammen alligevel.

Tak for dine svar.
Avatar billede jensgram Nybegynder
04. september 2006 - 06:45 #8
Så siger jeg også tak - og god fornøjelse med det.

- Jens Gram
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