Avatar billede lars-k Nybegynder
15. oktober 2001 - 08:49 Der er 8 kommentarer og
1 løsning

Validering af felter virker ikke

Hej

Jeg kan ikke få denne koden til at virke optimalt. Først tjekkes værdien i <select> cField. Derefter må der kun indtastes henholdvis tal eller bogstaver/space. Men indtastes eksempelvis et tal og et bogstav, godkendes det. Hvad kan jeg bruge i stedet for eks. ((cField ==\'Leverandør\' || cField==\'Varenavn\') && (!(tField.match(let))))

Her er hele koden:

    num= /[0-9]/
    let = /[a-zA-Z+æøåÆØÅ+\' \']/

    function CheckFields() {
    cField=VisFundneVarer.Soegevalg.value;
    tField=VisFundneVarer.Soegeinput.value;
    if (tField ==\'\'){
    alert(\'Feltet skal udfyldes.\');
    VisFundneVarer.Soegeinput.focus();
    VisFundneVarer.Soegeinput.select();
    event.returnValue=false;       

    }
    else
    {

    if ((cField ==\'Varenr\' || cField==\'Pris\') && (!(tField.match(num)))){
    alert(\'Feltet skal udfyldes med tal.\');
    VisFundneVarer.Soegeinput.focus();
    VisFundneVarer.Soegeinput.select();
    event.returnValue=false;
   
    }
    else
    {

    if ((cField ==\'Leverandør\' || cField==\'Varenavn\') && (!(tField.match(let)))){
    alert(\'Feltet skal udfyldes med bogstaver.\');
    VisFundneVarer.Soegeinput.focus();
    VisFundneVarer.Soegeinput.select();
    event.returnValue=false;

    }
    }
    }
    }

Hilsen lars-k
Avatar billede roenving Novice
15. oktober 2001 - 08:57 #1
Har du prøvet med:

(tField.match(let).length<1)

hth
jes
Avatar billede lars-k Nybegynder
15. oktober 2001 - 09:18 #2
Hej roenving

Nej, det virker ikke. Nu får jeg en fejlmelding om et manglende objekt.

lars-k
Avatar billede roenving Novice
15. oktober 2001 - 09:25 #3
Jamen så
tField.match(let)!=\'\'

fordi match returnerer null-værdien(-strengen) eller et array af matches

;·]
Avatar billede lars-k Nybegynder
15. oktober 2001 - 09:57 #4
....nu fejlmelder den, men også når der kun er indtastet bogstaver.....

lars-k :-)
Avatar billede roenving Novice
15. oktober 2001 - 10:19 #5
Er det så fordi, der skal stå \'num\' i stedet for \'let\' ?·]
Avatar billede lars-k Nybegynder
15. oktober 2001 - 11:13 #6
Nej, det har jeg lige prøvet. Der skal vel på en eller måde søges i strengen. Noget med alle forekomster der er forskellige fra \'let\' / \'num\'........ Kan man bruge noget aller tField.match(let)!=>1. Jeg er ikke lige en haj til dette...
Avatar billede jakoba Nybegynder
15. oktober 2001 - 11:23 #7
.match( regexp ) leder blot efter en match. et enkelt ciffer er nok for num, så kan resten være hvad det vil

    num= /^[0-9]+$/;
    let = /^[a-zA-Z+æøåÆØÅ ]+$/;

jeg har indsat 3 nye tegn 
^      begyndelsen af input
[0-9]  et ciffer (som du allerede har det)
+      foranstpende tegn kan gentages så mange gange det skal være
$      slutningen af input.

med ^ og $ vil match() kun give sand hvis hele indholdet af feltet passer
med + vil match() kikke efter nere end eet tegn i strengen der matcher

i tet har jeg fjernet +\' + (for at tilføje et blanktegn til de mulige skriver du blot blanktegnet.)

Hvis du laver de ændringer i dine to RegExp\'s vil jeg tro det virker.

mvh JakobA
Avatar billede jakoba Nybegynder
15. oktober 2001 - 11:29 #8
Ups:  fjernet +\' +  skulle være  fjernet +\' \'
Det er muligt det +-tegn foran æøå også bør væk. som det står her vil det illade at der er +-tegn i strengen.
Avatar billede lars-k Nybegynder
15. oktober 2001 - 12:17 #9
Til jer begge

Tak for hjælpen - JakobA får point, da dette var løsningen.

Ha\' en god dag - lars-k
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