Avatar billede duvander Juniormester
01. marts 2004 - 10:16 Der er 20 kommentarer og
1 løsning

Validering af form

Hvordan validere jeg denne form?
Kundnr -> skal indtastes og være tal
afdeling -> skal vælges
Vælg vare -> skal vælges
Navn -> skal også indtastes
Email -> skal valideres som mail. altså med @ og det man plejer at gøre!
<form action="bestil.asp" method="POST">
  <p><span class="style3">kundenr</span><br>
    <input name="kundenr" type="text" size="20" maxlength="10">
    <br>
    <br>
    <span class="style3">vælg afdeling
    <br>
    </span>
    <select name="afdeling" size="1">
      <option>afd.1</option>
      <option>afd.2</option>
    </select>
    <br>
    <br>
    <span class="style3">Vælg vare</span><br>
    <select name="vare" size="1">
      <option>vare 1.</option>
      <option>vare 2.</option>
    </select>
    <br>
    <br>
    Navn<br>
    <input type="text" name="navn">
    <br>
    <br>
    Email<br>
    <input type="text" name="email">
  </p>
  <p>    <input name="godkend" type="submit" value="Bestil">
    </p>
</form>
Avatar billede duvander Juniormester
01. marts 2004 - 10:18 #1
glemte lige at tilføje at, hvis et felt mangler valg ell. indtastning skal der komme en besked om hvilke felt der ikke er udfyldt korrekt ell. mangler at blive udfyldt.
Avatar billede mm12010 Nybegynder
01. marts 2004 - 10:25 #2
sådan?

<script language="javascript" type="text/javascript">
function validate(f){
    if(!f.kundenr.value.match(/[0-9]/)){
        f.kundenr.focus();
        f.kundenr.select();
        alert("fejl: kundenr");
        return false;
        }
    if(f.navn.value==""){
        f.navn.focus();
        alert("fejl: navn");
        return false;
        }
    if(!f.email.value.match(/^[\w]{1}[\w\.\-]*@[a-z0-9æøåäöüé]{1}[a-z0-9\-\.æøåäöüé]*\.[a-z]{2,6}$/i)){
        f.email.focus();
        f.email.select();
        alert("fejl: email");
        return false;
        }
    return true;
    }
</script>

...

<form action="bestil.asp" method="POST" onSubmit="return validate(this);">
Avatar billede duvander Juniormester
01. marts 2004 - 10:47 #3
skal javasciptet lige i <head>
Avatar billede duvander Juniormester
01. marts 2004 - 11:10 #4
ja det sku den! kundenr,navn,email virker. men hvad gør man når man har en listmenu (dropdown), og der skal vælges en af de muligheder den lister. hvis jeg angir den første som et minus eks. -  -> så skal den validere minus som om der ikke er valgt en af mulighederne i listmenu (dropdown). hvordan gør jeg det? eller er der noget der er mere hensigtmæssigt??
Avatar billede mm12010 Nybegynder
01. marts 2004 - 11:48 #5
du kan jo bare gøre sådan:

    <select name="afdeling" size="1">
      <option selected>afd.1</option>
      <option>afd.2</option>
    </select>
    <br>
    <br>
    <span class="style3">Vælg vare</span><br>
    <select name="vare" size="1">
      <option selected>vare 1.</option>
      <option>vare 2.</option>
    </select>

men ellers kan der sagtens laves en validering disse...
Avatar billede duvander Juniormester
01. marts 2004 - 12:19 #6
Hvis nu jeg siger <option selected="vælg afd."</options>, så skal den selected gi en alert, brugeren skal vælge en afd. så ikke de bare lader den stå i afd1. uden at tage stilling til det! hvordan gør jeg det?
Avatar billede mm12010 Nybegynder
01. marts 2004 - 12:26 #7
<select name="afdeling" size="1">
      <option selected>vælg afd</option>
      <option>afd.1</option>
      <option>afd.2</option>
    </select>
    <br>
    <br>
    <span class="style3">Vælg vare</span><br>
    <select name="vare" size="1">
      <option selected>vælg vare</option>
      <option>vare 1.</option>
      <option>vare 2.</option>
    </select>

og så tilføjer du flg. til scriptet:
    if(f.afdeling.selectedIndex==0){
        f.afdeling.focus();
        alert("fejl: afdeling");
        return false;
        }
    if(f.vare.selectedIndex==0){
        f.vare.focus();
        alert("fejl: vare");
        return false;
        }
Avatar billede duvander Juniormester
01. marts 2004 - 12:48 #8
Det virker men.. i kundenr. kan man godt nøjes med at taste f.eks. 4 cifre. det skal være et 10 cifret nummer, hvad skal jeg lave om?
if(!f.kundenr.value.match(/[0-9]/)){
        f.kundenr.focus();
        f.kundenr.select();
        alert("fejl: kundenr");
        return false;
Avatar billede mm12010 Nybegynder
01. marts 2004 - 13:11 #9
if(!f.kundenr.value.match(/[0-9]{10,10}/)){
Avatar billede duvander Juniormester
01. marts 2004 - 13:17 #10
Den sider også lige i skabet! takker for hjælp. laver du lige et svar?
Avatar billede roenving Novice
01. marts 2004 - 13:18 #11
>>mm

-- i {} er det første tal helt rigtigt minimum og det andet maksimum, men det er tilladt kun at skrive den ene (som du også (men overflødigt gør i {1} !-)

-- så {1} er det samme som ingenting og {10,10} kan skrives {10} ...
Avatar billede duvander Juniormester
01. marts 2004 - 13:36 #12
der var jeg lige lidt hurtig. det virker ikke helt kun hvis man indtaster 10 cifre første gang, hvis man taster 9 cifre for man alerten, hvis man så retter det til 10 cifre får man også alerten -> den skal gå igennem!
Avatar billede mm12010 Nybegynder
01. marts 2004 - 14:10 #13
roenving >> takker !-)

duvander >> er ikke helt med på hvad du mener...? gør du som roenving siger:
  if(!f.kundenr.value.match(/[0-9]{10}/)){ ?
Avatar billede duvander Juniormester
01. marts 2004 - 14:44 #14
Ja det gør jeg. Det der sker er at hvis jeg udfylder hele formen, men kun indtaster fire cifre i kundenr. så for jeg en alert. Den er go´nok. Men fejlen er hvis jeg retter de 4 cifre til 10 giver den mig også en alert! det skal den ikke, der skal den gå videre!
Avatar billede mm12010 Nybegynder
01. marts 2004 - 15:30 #15
dette virker upåklage hos mig:

<script language="javascript" type="text/javascript">
function validate(f){
    if(!f.kundenr.value.match(/[0-9]{10}/)){
        f.kundenr.focus();
        f.kundenr.select();
        alert("fejl: kundenr");
        return false;
        }
    if(f.afdeling.selectedIndex==0){
        f.afdeling.focus();
        alert("fejl: afdeling");
        return false;
        }
    if(f.vare.selectedIndex==0){
        f.vare.focus();
        alert("fejl: vare");
        return false;
        }
    if(f.navn.value==""){
        f.navn.focus();
        alert("fejl: navn");
        return false;
        }
    if(!f.email.value.match(/^[\w][\w\.\-]*@[a-z0-9æøåäöüé]{1}[a-z0-9\-\.æøåäöüé]*\.[a-z]{2,6}$/i)){
        f.email.focus();
        f.email.select();
        alert("fejl: email");
        return false;
        }
    return true;
    }
</script>
Avatar billede mm12010 Nybegynder
01. marts 2004 - 15:31 #16
if(!f.email.value.match(/^[\w][\w\.\-]*@[a-z0-9æøåäöüé][a-z0-9\-\.æøåäöüé]*\.[a-z]{2,6}$/i)){
Avatar billede duvander Juniormester
01. marts 2004 - 16:16 #17
meget besynderligt! hvis jeg skriver 0000000000 virker det. men hvis jeg bare plotter 10 tilfældige tal ind for jeg alerten frem??
Avatar billede duvander Juniormester
01. marts 2004 - 17:11 #18
nu virker det! lige et sidste spørgsmål hvad er forskellen på den første mail validering og den anden??
Avatar billede mm12010 Nybegynder
01. marts 2004 - 18:21 #19
disse: {1} er fjernet, jf. Kommentar: roenving 01/03-2004 13:18:24
Avatar billede duvander Juniormester
01. marts 2004 - 23:35 #20
alright tak for hjælpen. laver du lige et svar?
Avatar billede mm12010 Nybegynder
02. marts 2004 - 01:38 #21
selv tak :o)
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
Kurser inden for grundlæggende programmering

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