Avatar billede axemaster Nybegynder
20. juni 2005 - 12:14 Der er 2 kommentarer og
1 løsning

inputfilter i form

Kan man styre hvilke tegn (i dette tilfælde tal og .), som
man kan indtaste i et input felt i en form ???
Avatar billede softspot Forsker
20. juni 2005 - 12:26 #1
Ja da! :)

Man kan f.eks. reagere på onkeydown og kalde en handler som sorterer de anslag fra som ikke falder indenfor de regler du sætter op (event.returnValue = false for dem der ikke skal medtages, såvidt jeg husker).

Du skal nok også filtrere på andre events (så som onpaste), da der kan komme data i feltet via andre metoder end tastatur...
Avatar billede axemaster Nybegynder
20. juni 2005 - 12:36 #2
Kan jeg få et eksempel, plz :D
Avatar billede softspot Forsker
20. juni 2005 - 12:46 #3
Jeg har flg. formular:

<html>
    <head>
        <title>Test af inputvalidering</title>
        <script language="javascript" src="fieldvalidate.js"></script>
        <script language="javascript">
            function initInput()
            {
                for(var i = 0; i < document.forms[0].elements.length; i++)
                {
                    var elm = document.forms[0].elements[i];
                    if(elm.className == "numinput" || elm.className == "floatinput")
                    {
                        elm.onkeydown = ensureNumeric;
                        elm.onblur = formatNumeric;
                    }
                }
               
                var defCtl = document.forms[0].txtColumns
                if(defCtl)
                {
                    defCtl.focus();
                    defCtl.select();
                }
            }
        </script>
    </head>

    <body onload="initInput()">
        <form>
            <table>
                <tr>
                    <td class="labelcell"><label for="txtColumns">kommatal:</label></td>
                    <td class="inputcell"><input type="text" class="floatinput" value="4" minvalue="1" ID="txtColumns" NAME="txtColumns"/></td>
                </tr>
                <tr>
                    <td class="labelcell"><label for="txtRows">heltal:</label></td>
                    <td class="inputcell"><input type="text" class="numinput" value="3" minvalue="1" ID="txtRows" NAME="txtRows"/></td>
                </tr>
            </table>
        </form>
    </body>
</html>


og mit fieldvalidate-script ser således ud:
// ============================================================
// Sørger for at indholdet i et felt er numerisk.
// Feltet skal være af klassen floatinput eller numinput.
// floatinput tillader 0 eller 1 komma og tal.
// numinput tillader kun tal og altså ikke komma.
// ============================================================
function ensureNumeric()
{
    function isAllowed(ord, allows)
    {
        var bRes = false;
        bRes = allows.indexOf("," + ord + ",") > -1;
        return bRes;
    }
   
    var elm = event.srcElement;
    var ord = event.keyCode;
    var allowed = ",8,9,35,36,37,38,39,40,46,48,49,50,51,52,53,54,55,56,57,96,97,98,99,100,101,102,103,104,105,";
    if(elm.className == "floatinput" && elm.value.indexOf(",") < 0)
        allowed += "110,188,";
       
    if(!isAllowed(ord, allowed))
    {
        event.returnValue = false;
    }
    window.status = ord;
}

// ============================================================
// Formatterer indholdet af et numerisk felt, så det sikres at
// tal indtastet er valide heltal eller kommatal.
// Hvis der på input-feltet er defineret en attribut som hedder
// "minvalue" kan feltets værdi ikke være mindre end denne.
// ============================================================
function formatNumeric()
{
    var elm = event.srcElement;
   
    if(elm)
    {
        var minval = elm.getAttribute("minvalue") + "";
        var v = parseFloat("0" + elm.value.replace(",","."));
        if(minval != "")
            if(v < minval)
                v = parseFloat(minval);                   
        elm.value = v.toString().replace(".",",");
    }
}
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
Kurser inden for grundlæggende programmering

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