Avatar billede _petrucci Nybegynder
20. december 2000 - 13:02 Der er 23 kommentarer og
2 løsninger

Validering af form (sikkert nem)

Hejsa,

jeg har en ganske almindelig form med input tekst-felter som sendes via en submit knap. Problemet er at hvis man ikke skriver noget i nogen af felterne, kan man stadig sende formen, hvilket har resulteret i en h..... masse tomme emails. Er der en nem måde hvorpå man kan undgå at en person bare klikker på submit 10 gange i træk uden der er skrevet noget ind?

Altså en validering på at et eller andet felt bare skal være udfyldt.
Avatar billede senj Nybegynder
20. december 2000 - 13:07 #1
Et eks. fra min egen baghave. kaldes via onclick = \"checkform()\";

<script language=\"JavaScript\">

function checkform()
{
<!-- Laver et array indhold = personoplysninger der er påkrævet -->
var formnavne = new Array (document.salgsvur.fnavn,
document.salgsvur.enavn,
document.salgsvur.adr,
document.salgsvur.bynavn,
document.salgsvur.pnr);                                               
                           
<!-- Tjekker om felterne fra array (formnavne) indeholder en værdi -->
for (var i = 0; i < formnavne.length; i++)
{
if(eval(formnavne[i].value==\"\"))
      {
        alert(\"Alle felter skal være udfyldte før din bestilling kan godkendes\");
        formnavne[i].focus();
        return false;
      }
}

}
document.salgsvur.submit();
}

</script>
Avatar billede erikjacobsen Ekspert
20. december 2000 - 13:08 #2
senj: bliver din validering kaldt hvis brugeren trykker retur i et tekstfelt?
Avatar billede senj Nybegynder
20. december 2000 - 13:09 #3
nej retur giver i dette eks. ingenting!
Avatar billede erikjacobsen Ekspert
20. december 2000 - 13:10 #4
Ingenting? Bliver den ikke submittet?  (Ok, der er forskel på IE og NS, men
IE har en \"tendens\" til at submitte blot man trykker retur i et tekstfelt)
Avatar billede senj Nybegynder
20. december 2000 - 13:12 #5
submit sker via tryk på en knap - image onclick om du vil. Enter/return giver ingenting (i min bruser)
Avatar billede _petrucci Nybegynder
20. december 2000 - 13:20 #6
Ok har et mindre problem - det virker ikke ;)

Jeg har følgende af din kode i <head>:

<script language=\"JavaScript\">

function checkform()
{
<!-- Laver et array indhold = personoplysninger der er påkrævet -->
var formnavne = new Array (

document.webmail.navn );                                                               
<!-- Tjekker om felterne fra array (formnavne) indeholder en værdi -->
for (var i = 0; i < formnavne.length; i++)
{
if(eval(formnavne[i].value==\"\"))
      {
        alert(\"Alle felter skal være udfyldte.\");
        formnavne[i].focus();
        return false;
      }
}
)
document.webmail.submit();
}
</script>


webmail = formens navn
navn = input-feltets navn

Formen kører et formmail cgi-script.

Hvad er der galt med min kode? :)
Avatar billede senj Nybegynder
20. december 2000 - 13:24 #7
Hvis du kun skal evaluerer på et felt behøver du ikke et array!
Avatar billede _petrucci Nybegynder
20. december 2000 - 13:25 #8
nej, men jeg har flere felter i formen - ville bare se om det virkede med 1 felt først.
Avatar billede senj Nybegynder
20. december 2000 - 13:26 #9
Hukser du at kalde funktionen?
Avatar billede _petrucci Nybegynder
20. december 2000 - 13:27 #10
kan man ikke bare vælge at hvis der ikke er indtastet noget i Navn feltet så skal den komme med en alert? således at de resterende form-elementer gerne må være tomme
Avatar billede _petrucci Nybegynder
20. december 2000 - 13:27 #11
yep, men måske det er der det er galt - jeg laver onclick på submit knappen
Avatar billede senj Nybegynder
20. december 2000 - 13:28 #12
function()
{
if(document.webmail.navn.value == \"\")
{
alert(\"hghghghghghgh\");
}
}
Avatar billede _petrucci Nybegynder
20. december 2000 - 13:31 #13
<head>
<script language=\"JavaScript\">

function blah()
{
if(document.webmail.navn.value == \"\")
{
alert(\"hghghghghghgh\");
}
}
</head>

<body>

<FORM NAME=\"webmail\" ACTION=\"/cgi-bin/mailtoform20.pl\" METHOD=\"POST\">

..
formfelter
..

<input type=\"submit\" value=\"Send\" onclick = \"blah()\";>

</form>


Således har jeg det - men den submitter sgi stadig :(
Avatar billede olebole Juniormester
20. december 2000 - 13:33 #14
<ole>
Du skal kalde den på:
    <form onsubmit=\"return checkform();\">
...eller:
    <input type=\"button\" value=\"Send\" onclick=\"checkform();\">
/mvh
</bole>
Avatar billede _petrucci Nybegynder
20. december 2000 - 13:39 #15
Jeg får godt nok stadig fejl så - en Object Expected fejl i linjen med Button knappen.....
Avatar billede erikjacobsen Ekspert
20. december 2000 - 13:39 #16
senj: hvis der ikke er en type=\"submit\" så sender den ikke ved at
trykke retur i et felt - og så virker din fint. Men er der en submit-knap
bør man gøre det på onsubmit i formen som olebole (DAVS - hvordan
går det?) skriver.
Avatar billede senj Nybegynder
20. december 2000 - 13:39 #17
Så kan den ikke finde functionen!
Avatar billede senj Nybegynder
20. december 2000 - 13:40 #18
erikjacobsen. det er der heller ikke!
Avatar billede erikjacobsen Ekspert
20. december 2000 - 13:43 #19
Ikke i din, senj, men i spørgerens, er der jo en submit-knap.
Avatar billede senj Nybegynder
20. december 2000 - 13:44 #20
Ja det ved jeg, men som ole skrev <input type=\"button\" value=\"Send\" onclick=\"checkform();\"> var der en anden løsning!
Avatar billede _petrucci Nybegynder
20. december 2000 - 13:45 #21
ja, og den kommer så med Object Expected fejlen, når jeg gør det på den måde. :(
Avatar billede senj Nybegynder
20. december 2000 - 13:47 #22
prøv at fjerne ; så der står \"checkform()\"
Avatar billede olebole Juniormester
20. december 2000 - 13:51 #23
Nej, der _skal_ være semikolon!

Har du mon din form liggende i et positioneret <div>?
(Hej, Erik - tak, fint)
/mvh
Avatar billede senj Nybegynder
20. december 2000 - 13:53 #24
; behøver ikke være der. Om det så er dårlig kodeskik el. ej
Avatar billede _petrucci Nybegynder
20. december 2000 - 13:57 #25
Jeg fandt ud af det :)  Jeg havde skrevet et } for meget oppe i scriptet - mange tak for hjælpen :)
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