Avatar billede sjoller Nybegynder
07. oktober 2001 - 14:08 Der er 15 kommentarer og
1 løsning

Validering af input

Hvordan laver jeg et script der validerer input på følgende måde:

Jeg skal have valideret X antal input felter for om der er nogle værder der er ens.
Hvis der er skal der ikke ske noget og hvis alle værdierne er forskellige skal formen submittes.
Avatar billede Slettet bruger
07. oktober 2001 - 14:21 #1
<script>
antal = 10; //Antal input-boxe
inputs = new Array();

function testForm(frm) {
for (i = 0; i < antal; i++) {
elVal = eval(\"frm.input\" + i + \".value\");
inputs[i] = elVal;
}
for (i = 0; i < inputs.length; i++) {
for (nr = 0; nr < input.length; nr++) {
if (i != nr && inputs[i] == inputs[nr]) return;
}
}
frm.submit();
}
</script>

Og sådan skal formen sådan cirka se ud:

<form>
<input type=\"text\" size=\"10\" name=\"input0\"><br>
<input type=\"text\" size=\"10\" name=\"input1\"><br>
<input type=\"text\" size=\"10\" name=\"input2\"><br>
<input type=\"text\" size=\"10\" name=\"input3\"><br>
<input type=\"text\" size=\"10\" name=\"input4\"><br>
<input type=\"text\" size=\"10\" name=\"input5\"><br>
<input type=\"text\" size=\"10\" name=\"input6\"><br>
<input type=\"text\" size=\"10\" name=\"input7\"><br>
<input type=\"text\" size=\"10\" name=\"input8\"><br>
<input type=\"text\" size=\"10\" name=\"input9\"><br>
<input type=\"button\" value=\"Tjek!\" onClick=\"testForm(this.form);\">
</form>
Avatar billede jakoba Nybegynder
07. oktober 2001 - 14:23 #2
noget i retning af:

<script language=\'javascript\'>

var verdier = new Array(); // her husker vi de hidtil fundne forskellige værdier

function checkUens( frm ) {
    verdier = new Array();      // nulstil hukommelsen
    var fe = frm.elements;
    for (var i=0; fe.length>i; i++) {
        if ( fe[i].type = \'text\' ) {
            for (var j=verdier.length-1; j>=0; j--)
                if ( verdier[j] == fe[i].value ) return false; // failed.
            verdier[verdier.length] = fe[i].value;
        }
    }
    return true; // ingen dubletter fundet. alt er ok.
}; //end checkUens( Form object ) -> boolean

</script>

mvh JakobA
Avatar billede Slettet bruger
07. oktober 2001 - 14:25 #3
Lige en enkelt stavefejl, ellers så virker den vist:
for (nr = 0; nr < input.length; nr++) {
skal skiftes ud med:
for (nr = 0; nr < inputs.length; nr++) {
Avatar billede jakoba Nybegynder
07. oktober 2001 - 14:26 #4
for langsom og sågar en forkert betingelse i første if sætning == for at sammenligne :(
Avatar billede Slettet bruger
07. oktober 2001 - 14:28 #5
Men den er i hvert fald meget smartere end min, da man ikke skal indtaste antallet af elementer!
Avatar billede sjoller Nybegynder
07. oktober 2001 - 14:40 #6
jakoba >>
Jeg sidder og roder lidt med din... jeg skal lige have den til at virke...
Avatar billede sjoller Nybegynder
07. oktober 2001 - 14:43 #7
Hvor spørger jeg om resultatet på scriptet?
Avatar billede sjoller Nybegynder
07. oktober 2001 - 14:44 #8
Jeg skal vel spørge om hvad den returnerer ? Men hvor og hvordan +
Avatar billede jakoba Nybegynder
07. oktober 2001 - 14:48 #9
Den returnerer false hvis der er dubletter og true hvis der ikke er dubletter.
Du har ændret linien:
        if ( fe[i].type = \'text\' ) {    // fejl.  = er assignment
til:
        if ( fe[i].type == \'text\' ) {    // rigtigt.  == er sammenlign
ikke?
Avatar billede sjoller Nybegynder
07. oktober 2001 - 14:52 #10
Jo, men hvor sætter jeg min \"frm.submit\" hvis \"true\" og min \"Alert(\"du har dummet dig\")\" hvir \"false\" ind henne ?
Avatar billede jakoba Nybegynder
07. oktober 2001 - 14:53 #11
kaldes fx i en onsubmit handler med:
<form ... onsubmit=\"return checkUens( this )\">
Avatar billede sjoller Nybegynder
07. oktober 2001 - 15:00 #12
Hvad skal der stå i stedet for this i parametren der sendes til funktionen ?
Avatar billede Slettet bruger
07. oktober 2001 - 15:01 #13
sjoller>> Der skal bare stå \"this\"!
Avatar billede jakoba Nybegynder
07. oktober 2001 - 15:02 #14
du laver en ekstra lille funktion til det. lad os kalde den valider()

<script language=\'javascript\'>

var verdier = new Array(); // her husker vi de hidtil fundne forskellige værdier

function checkUens( frm ) {
    verdier = new Array();      // nulstil hukommelsen
    var fe = frm.elements;
    for (var i=0; fe.length>i; i++) {
        if ( fe[i].type = \'text\' ) {
            for (var j=verdier.length-1; j>=0; j--)
                if ( verdier[j] == fe[i].value ) return false; // failed.
            verdier[verdier.length] = fe[i].value;
        }
    }
    return true; // ingen dubletter fundet. alt er ok.
}; //end checkUens( Form object ) -> boolean

function valider( frm ) {

    if ( ! checkUens( frm ) {
        alert( \"du har dummet dig.\" )
        return false;  // nu bliver der ikke submittet
    }

    return true;  // nu bliver der submittet
}; //end valider( Form object ) -> boolean

</script>

og kalder så funktionen valider i din onsubmit handeler:

<form ... onsubmit=\"return valider( this );\">

mvh JakobA
Avatar billede jakoba Nybegynder
07. oktober 2001 - 15:03 #15
Ups. Og jeg glemte at rette det %¤#&%¤ lighedstegn til et dobbelt.
Avatar billede sjoller Nybegynder
07. oktober 2001 - 16:07 #16
Sådan, der var lige nu småting der skulle rettes ( Der manglede bla. en \")\" ) og derudover skulle der lige nu grundlæggende Javscript forståelse på plads...

takker for hjælpen ( og tålmodigheden...)

/ Sjoller
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