Avatar billede pedepede Nybegynder
29. juli 2002 - 16:52 Der er 9 kommentarer og
1 løsning

Validering af felter

Hej
Jeg skal have valideret et felt i en formular. Det indtastede skal være et tal og derfor har jeg lavet en kode der hedder:

function validate() {
    if (typeof(document.forms[0].Score.value=="string")) {
    alert("Skriv et tal")
    return false;
    }
}

Det virker bare ikke! For uanset hvad jeg skriver i feltet er det indtastede af typen "string". Hvad gør jeg galt og hvordan skal koden se ud???

MVH
Peter
Avatar billede azez Nybegynder
29. juli 2002 - 16:59 #1
prøv med integer eller lign i feltet
Avatar billede azez Nybegynder
29. juli 2002 - 16:59 #2
altså i stedet for string
Avatar billede jakoba Nybegynder
29. juli 2002 - 17:20 #3
hvadsomhelst der står i feltet ER en streng. dvs et antal bogstaver efter hinanden.
du kan evt bruge en regular expression for at teste om de bogstaver danner et gyldigt tal:

function validate() {
    if ( ! document.forms[0].Score.value.match( /^\d+(\.\d+|)?$/ ) ) {
        alert("Skriv et tal")
        return false;
    }
}

mvh JakobA
Avatar billede mikoalngelo Nybegynder
29. juli 2002 - 20:42 #4
prøv at flytte =="string":

function validate() {
    if (typeof(document.forms[0].Score.value)=="string") {
    alert("Skriv et tal")
    return false;
    }
}
Avatar billede unsigned Nybegynder
29. juli 2002 - 22:28 #5
Her er mit bud:

function validate()
{
    if (
          (document.forms[0].Score.value < "0")
          ||
          (document.forms[0].Score.value > "9")
      )
        {
          alert("Skriv et tal")
          return false;
        }
}
Avatar billede pedepede Nybegynder
30. juli 2002 - 09:27 #6
Jacoba's kode er i dette tilfælde den mest brugbare. Der er bare et problem: den godtager ikke tal hvor der indgår et komma. Kan du fikse det? (Jeg fatter nemlig ikke en meter af den kode...!)
- Peter
Avatar billede jakoba Nybegynder
30. juli 2002 - 09:54 #7
jo det kan den sagtens:

function validate() {
    if ( ! document.forms[0].Score.value.match( /^\d+([\.\,]\d+|)?$/ ) ) {
        alert("Skriv et tal")
        return false;
    }
}

nu kan der stå enten . eller komma.

mvh JakobA
Avatar billede pedepede Nybegynder
30. juli 2002 - 10:02 #8
Så virker det! Herligt. Det ville være super med en forklaring til: /^\d+([\.\,]\d+|)?$/  !!!!! (Altså hvis du gider...)
- Peter
Avatar billede jakoba Nybegynder
30. juli 2002 - 10:29 #9
det hedder en regular expression, og den fulde forklaring får du her:
http://developer.netscape.com/docs/manuals/js/client/jsref/regexp.htm
men det er noget af en mundfuld, så her er den korte version:

en regular expression beskriver et bogstavmønster som der så kan søges efter i en større streng. den omkranses af /-tegn ligesom en streng ompranses af apostroffer.

^            matcher 'begyndelsen af strengen'
\d          specialtegn der betyder 'et ciffer' ( 0..9 )
+            tegnet foran kan være gentaget så mange gang det skal være
( )          omkranser et under-udtryk
( )?        undrudtrykket kan være udeladt eller stå der een gang
[ ]          omkranser en liste af alternative bogstaver
[\.\,]      enten punktum eller komma ( \ er escape-tegn )
\d+          efter . eller komma kommer eet til mange cifre
|            opdeler underudtrykket i alternative udtryk, enten det der
            står før | eller det der står efter (dvs ingenting)
$            matcher 'afslutingen af strengen'

Så fra først til sidst ( ^ og $ ) skal strengen bestå af
  nogen cifre          ( \d+ ) der måske efterfølges af
  punktum eller komma  og så nogen flere cifre

mvh JakobA
Avatar billede mikoalngelo Nybegynder
30. juli 2002 - 10:55 #10
Tak JAkob, jeg her ledt nettet TYNDT for at finde en "finde-ud-af-for-almindelige-mennesker"-beskrivelse af sådan en ragular expression. Love ya ;)
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