Avatar billede mitbrugernavn Praktikant
12. marts 2008 - 20:36 Der er 13 kommentarer og
1 løsning

validering af dynamisk array

har en dynamisk række tal f.eks. 1,3,5,7,34,45,67,89 som ikke må tastes i nr feltet - hvordan validerer jeg for det


har følgende form og validering

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
   
    function Form2_Validator(form2){

        if (document.form2.nr.value=='')
        {
            alert("Angiv nummer.");
            document.form2.nr.focus();
            return false;
        }

        if (document.form2.tekst.value=='')
        {
            alert("Angiv tekst");
            document.form2.tekst.focus();
            return false;
        }
   
        else { return true; }
    }

//-->
</SCRIPT>

<form name="form2" method="post" action="" onSubmit="return Form2_Validator(this)">
  <input type="text" name="nr"><br>
<input type="text" name="tekst"><br>
<input type="submit" name="Submit" value="ok test">

</form>
Avatar billede olebole Juniormester
13. marts 2008 - 00:19 #1
<ole>

Ligger tallene kommasepareret i en streng - eller i et array?

/mvh
</bole>
Avatar billede mitbrugernavn Praktikant
13. marts 2008 - 06:56 #2
de bliver hentet fra en db og kan lægges som de skal bruges med komma eller andet til en streng
Avatar billede w13 Novice
13. marts 2008 - 12:27 #3
Burde være noget i stil med:
----------------------------
<script language="javascript" type="text/javascript">
<!--
   
    function Form2_Validator(form2){
        var arr=new Array("1","3","5","7","34","45","67","89");

        if(document.form2.nr.value==''){
            alert("Angiv nummer.");
            document.form2.nr.focus();
            return false;
        }

        if(document.form2.tekst.value==''){
            alert("Angiv tekst.");
            document.form2.tekst.focus();
            return false;
        }

        for(var i=0;i<arr.length;i++){
            if(document.form2.nr.value==arr[i]){
                alert("Forbudt nr.");
                document.form2.nr.focus();
                return false;
            }
        }
   
        return true;
    }

//-->
</SCRIPT>

<form name="form2" method="post" action="" onsubmit="return Form2_Validator(this)">
  <input type="text" name="nr"><br>
  <input type="text" name="tekst"><br>
  <input type="submit" name="Submit" value="ok test">
</form>
Avatar billede roenving Novice
13. marts 2008 - 14:15 #4
Hvis du indsætter dem i en streng med \b|\b som deler kan det gøres rigtigt simpelt:

var tal = "\b1\b|\b3\b|\b5\b|\b7\b|\b34\b|\b45\b|\b67\b|\b89\b";
var reg = new RegExp("^(" + tal + ")$");

-- og så:

if(dinVaerdi.match(reg)){
  //et af dine ulovlige tal er til stede
}else{
  //Ingen ulovlige tal !-)
}

-- \b betyder ordgrænse og bruges, så 73 ikke bannes, selv om både 3 og 7 er ulovlige !o]
Avatar billede mitbrugernavn Praktikant
13. marts 2008 - 15:46 #5
jeg kigger lige på det og vender stærkt tilbage imorgen - god aften
Avatar billede olebole Juniormester
13. marts 2008 - 16:26 #6
roenving >> Det var præcis årsagen til, jeg spurgte  ;o)
Din RegExp-løsning holder dog ikke. Den bør se sådan ud:

var tal = "1|3|5|7|34|45|67|89";
var reg = new RegExp("^(" + tal + ")$");

-- og så:

if(dinVaerdi.match(reg)){
  //et af dine ulovlige tal er til stede
}else{
  //Ingen ulovlige tal !-)
}

Det virker netop ikke med de '\b', du har sat ind - og da du bruger '^' og '$' bliver 73 ikke anset for at være et ulovligt tal med mit talmønster  :)
Avatar billede roenving Novice
13. marts 2008 - 23:43 #7
Sådan er det, når tre forskellige tanker krydser hinanden ...
Avatar billede mitbrugernavn Praktikant
18. marts 2008 - 07:26 #8
øv - hvad gør jeg forkert - det virker ikke

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
   
    function Form2_Validator(form2){

        if (document.form2.nr.value=='')
        {
            alert("Angiv nummer.");
            document.form2.nr.focus();
            return false;
        }

var tal = "140013|140011|140010|140009|140008|140006|1";
var reg = new RegExp("^(" + tal + ")$");

if(document.form2.nr.match(reg))
{
alert("NR. er brugt");
            document.form2.nr.focus();
            return false;
}

        if (document.form2.tekst.value=='')
        {
            alert("Angiv tekst");
            document.form2.tekst.focus();
            return false;
        }
   
        else { return true; }
    }

//-->
</SCRIPT>

<form name="form2" method="post" action="" onSubmit="return Form2_Validator(this)">
  <input type="text" name="nr"><br>
<input type="text" name="tekst"><br>
<input type="submit" name="Submit" value="ok test">

</form>
Avatar billede w13 Novice
01. april 2008 - 12:35 #9
Hvordan virker det ikke? Hvilken fejl får du?
Avatar billede mitbrugernavn Praktikant
01. april 2008 - 12:48 #10
den kører bare igennem uden validering - prøv det script jeg sidst har lagt.
Avatar billede w13 Novice
01. april 2008 - 13:06 #11
Hvis du slår visning af JavaScript-fejl til, får du en fejlmeddelelse om (i mit tilfælde) linje 19 ("if(document.form2.nr.match(reg))"):
Objektet understøtter ikke denne egenskab eller metode.
Avatar billede w13 Novice
01. april 2008 - 13:07 #12
Prøv at rette:
if(document.form2.nr.match(reg))
til:
if(document.form2.nr.value.match(reg))
:)
Avatar billede mitbrugernavn Praktikant
07. april 2008 - 15:15 #13
super nu virker det - undskyld ventetiden, men har ikke haft tid til at tjekke op på det før nu - tak for hjælpen.
Avatar billede w13 Novice
07. april 2008 - 15:29 #14
Og tak for point. =)
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