Avatar billede cyberzed Nybegynder
21. oktober 2003 - 10:46 Der er 6 kommentarer og
1 løsning

Underlig bug i JavaScript eller er det bare mig (Regexp)

Jeg har ....

<html>
    <head>
        <title>TEST</title>
    </head>
    <script>
        function ValidateNum(input)
        {
            var numregex = new RegExp('\\d+');
           
            alert("1");
           
            if(numregex.test(input))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
       
        function ValidateNumMin(input, min)
        {
            var numregex = new RegExp('\\d{' + min + ',}');
           
            alert("2");
           
            if(numregex.test(input))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
       
        function ValidateNumMinMax(input, min, max)
        {
            var numregex = new RegExp('\\d{' + min + ',' + max + '}');
           
            alert("3");
            alert(numregex.source);
            alert(input);
            alert(numregex.test(input));
           
            if(numregex.test(input))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
       
        function Validate()
        {
            if(ValidateNumMinMax(document.testf.numfelt.value, 4, 5))
            {
                alert("YES WAY");
            }
            else
            {
                alert("NO WAY");
            }
        }
    </script>
    <body>
        <form name="testf">
            <input type="text" name="numfelt">
            <br>
            <input type="button" name="test" value="klik" OnClick="Validate()">
        </form>
    </body>
</html>

Når jeg så tester den med ValidateNumMinMax hvor max er sat til 5 så bliver den ved med at give true når jeg skriver 6, 7, 8 digits.....nogen der kan forklare hvorfor ?
Avatar billede olebole Juniormester
21. oktober 2003 - 10:55 #1
<ole>

Du laver en underlig bug i dit script  ;o)
Du sender jo intet argument med til funktionen - så er der jo ikke noget at sige til, det ikke virker. Det _må_ ikke fungere  :)

/mvh
</bole>
Avatar billede cyberzed Nybegynder
21. oktober 2003 - 11:01 #2
"function ValidateNumMinMax(input, min, max)"

"if(ValidateNumMinMax(document.testf.numfelt.value, 4, 5))"

eeeeh hvad er det lige du vil frem til selvfølgelig skriver jeg da noget i document.testf.numfelt ellers ville jeg jo nok aldrig have postet det herinde
Avatar billede olebole Juniormester
21. oktober 2003 - 11:09 #3
Sorry ... jeg så ikke ordentlig efter  :D
Vil du altid bruge de samme max og min (i øvrigt dårligt valgte navne, da de bruges til andet i JS) værdier? Så er der jo ingen grund til at opdele i flere funktioner
/mvh
Avatar billede cyberzed Nybegynder
21. oktober 2003 - 11:13 #4
det skal være en generel funktion jeg kan bruge på alle mine webs så det er ikke noget med at hardcode værdier
Avatar billede olebole Juniormester
21. oktober 2003 - 11:21 #5
Så må du lige forklare, hvad du skal bruge den til. Det virker jo ikke ligefrem som en hensigtsmæssig kode  :)
Avatar billede cyberzed Nybegynder
21. oktober 2003 - 11:44 #6
Hmmm så kan jeg jo også bare lære det at jeg skal bruge ^ og $ for at jeg får det som jeg ønsker :) ^\{4,5}$
Avatar billede olebole Juniormester
21. oktober 2003 - 11:54 #7
yups ... det hjælper jo en del. Men det var jo ikke til at se, hvad du ville udfra din kode  :)
Jeg ville f.eks. nok skrive dette:

<script type="text/JavaScript">
function val(f, mi, ma) {
    var numregex = new RegExp("^[0-9]{"+mi+","+ma+"}$");
    if ( !numregex.test(f.numfelt.value) ) {
        alert("Fejl");
        f.numfelt.focus();
        return false;
    } else {
        alert("Fjong");
    }
}
</script>

<form name="testf" onsubmit="return val(this,4,5)">
    <input type="text" name="numfelt">
    <br>
    <input type="submit" name="test" value="klik">
</form>

Det er vist på flere måder betydelig mere hensigtsmæssigt  ;o)
/mvh
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