Avatar billede teepee Nybegynder
19. februar 2004 - 11:21 Der er 8 kommentarer og
1 løsning

Automatisk udfyldning

Hejsa. Kan I hjælpe en backend udvikler med noget som nok er temmeligt simpelt for jer.

Forestil jer en formular med et vilkårligt antal input felter, kaldet f1, f2, f3....fn, hvor n er et vilkårligt nummer. Hver input felt kan indeholde ét tegn. Brugeren kan vælge at udfylde nogle eller alle felterne.

Efter udfyldning skal en funktion gennemløbe alle f-felterne og validere dem. Alle tomme felter skal udfyldes med et vilkårlig tegn (ud fra defineret streng, eks. 'ABCabc123')

Hvis det er let at lave så skal der under indtastning også valideres ud fra samme streng, og taster brugerne noget andet, så skal der bare slettes det indtastede tegn igen.
Avatar billede schaefner Juniormester
19. februar 2004 - 11:36 #1
Avatar billede nute Nybegynder
19. februar 2004 - 11:36 #2
noget ála dette ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    var strAllowedChars = "ABCabc123";
    function validate()
    {
        var objForm = document.forms['frm'];
        for( var i = 0; i < objForm.elements.length; i++ )
        {
            var objElement = objForm.elements[ i ];
            if( objElement.id.indexOf( "f" ) == 0 )
            {
                var strValue = objElement.value;

                if( strAllowedChars.indexOf( strValue ) <= 0  )
                {
                    objElement.value = getRandomValue();
                }
            }
        }
    }
    function getRandomValue()
    {
        var intRandom = Math.floor( ( Math.random() * strAllowedChars.length ) );
        return strAllowedChars.charAt( intRandom );
    }
    //-->
    </script>
</head>

<body>
<form id="frm">
<input type="text" size="1" maxlength="1" id="f1"><br>
<input type="text" size="1" maxlength="1" id="f2"><br>
<input type="text" size="1" maxlength="1" id="f3"><br>
<input type="text" size="1" maxlength="1" id="f4"><br>
<input type="text" size="1" maxlength="1" id="f5"><br>
<input type="text" size="1" maxlength="1" id="f6"><br>
<input type="text" size="1" maxlength="1" id="f7"><br>
<input type="button" onclick="validate();" value="valider">
</form>


</body>
</html>


/nute
Avatar billede teepee Nybegynder
19. februar 2004 - 12:40 #3
Det er meget nydeligt. Kan du hjælpe med 2. halvdel af spørgsmålet? At validere mens brugeren indtaster og bare fjerne hvad han/hun indtaster hvis det ikke passer ind i strAllowedChars? Ovenstående overskriver nemlig bare alle ulovlige tegn og det opdager brugeren måske ikke.
=> Og læg lige et svar så du kan få dine point.
Tak for hjælpen.
Avatar billede teepee Nybegynder
19. februar 2004 - 12:42 #4
=> schaefner, undskyld jeg så ikke din løsning, jeg skal nok huske dig når jeg deler point ud
Avatar billede nute Nybegynder
19. februar 2004 - 12:49 #5
schaefner >> dit eksempelt udfylder jo ikke textfelterne med vilkårlig tegn

teepee >> her er så en ny og forbedret løsning:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    var strAllowedChars = "ABCabc123";
    function validate()
    {
        var objForm = document.forms['frm'];
        for( var i = 0; i < objForm.elements.length; i++ )
        {
            var objElement = objForm.elements[ i ];
            validateElement( objElement );
        }
    }
    function validateElement( objElement )
    {
        if( objElement.id.indexOf( "f" ) == 0 )
        {
            var strValue = objElement.value;
           
            if( strValue.length == 0 || strAllowedChars.indexOf( strValue ) < 0  )
            {
                objElement.value = getRandomValue();
            }
        }
    }
    function getRandomValue()
    {
        var intRandom = Math.floor( ( Math.random() * strAllowedChars.length ) );
        return strAllowedChars.charAt( intRandom );
    }
    //-->
    </script>
</head>

<body>
<form id="frm">
<input type="text" size="1" maxlength="1" id="f1" onchange="validateElement( this );"><br>
<input type="text" size="1" maxlength="1" id="f2" onchange="validateElement( this );"><br>
<input type="text" size="1" maxlength="1" id="f3" onchange="validateElement( this );"><br>
<input type="text" size="1" maxlength="1" id="f4" onchange="validateElement( this );"><br>
<input type="text" size="1" maxlength="1" id="f5" onchange="validateElement( this );"><br>
<input type="text" size="1" maxlength="1" id="f6" onchange="validateElement( this );"><br>
<input type="text" size="1" maxlength="1" id="f7" onchange="validateElement( this );"><br>
<input type="button" onclick="validate();" value="valider">
</form>


</body>
</html>

/nute
Avatar billede nute Nybegynder
19. februar 2004 - 12:53 #6
svar
Avatar billede teepee Nybegynder
19. februar 2004 - 13:04 #7
Ja, men... :-) He, he. Når man udfylder noget forkert skal der bare stå "", altså ingenting. Din udfylder med random værdi med det samme. Det skal først ske når validerer hele formen.
Avatar billede nute Nybegynder
19. februar 2004 - 13:31 #8
ahhh ... lav onchange om til:

validateElement( this, true );

derefter laver du denne linje:

validateElement( objElement );

om til:

validateElement( objElement, false );

derefter laver du function validateElement om til:

function validateElement( objElement, bReplaceWithSpace )
    {
        if( objElement.id.indexOf( "f" ) == 0 )
        {
            var strValue = objElement.value;
           
            if( strValue.length == 0 || strAllowedChars.indexOf( strValue ) < 0  )
            {
                if( bReplaceWithSpace )
                {
                    objElement.value = "";
                }
                else
                {
                    objElement.value = getRandomValue();
                }
            }
        }
    }

/nute
Avatar billede teepee Nybegynder
19. februar 2004 - 15:42 #9
takker
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