Vraag & Antwoord

Webprogrammeren & scripting

funtie via OnSubmit voor 2e keer aanroepen

Anoniem
Annie
4 antwoorden
  • Ik probeer een javascript functie meerdere keren aan te roepen via OnSubmit in de form-action:
    [code:1:873462c143]<form method="post" name="txt" onSubmit="return doanothercheck(this.link_tekst) doanothercheck(this.naam);" action="pagina.php">
    [/code:1:873462c143]

    en een stukje formulier:[code:1:873462c143]<input type='text' name='naam' value='' onKeyUp="javascript:dodacheck(txt.naam);">
    <input type='text' name='link_tekst' value='' onKeyUp="javascript:dodacheck(txt.link_tekst);">[/code:1:873462c143]

    Daarmee probeer ik te bereiken dat verschillende formvelden worden gecontroleerd op verkeerde tekens als het formulier wordt verzonden.
    Wie kan mij uitleggen hoe ik de form action moet aanpassen? Dit onSubmit="return doanothercheck(this.link_tekst) doanothercheck(this.naam);" lukt niet…. Althans soms wel en soms niet…




    Dit is de functie:
    [code:1:873462c143]<!– Begin
    var mikExp = /[$\\@\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\~\=\|]/;
    function dodacheck(val) {
    var strPass = val.value;
    var strLength = strPass.length;
    var lchar = val.value.charAt((strLength) - 1);
    if(lchar.search(mikExp) != -1) {
    var tst = val.value.substring(0, (strLength) - 1);
    val.value = tst;
    }
    }
    function doanothercheck(form) {
    if(form.value.length < 1) {
    alert("Please enter something.");
    return false;
    }
    if(form.value.search(mikExp) == -1) {
    alert("Correct Input");
    return false;
    }
    else {
    alert("Sorry, but the following characters\n\r\n\r@ $ % ^ & * # ( ) [ ] \\ { + } ` ~ = | \n\r\n\rare not allowed!\n");
    form.select();
    form.focus();
    return false;
    }
    alert("Correct Input");
    return false;
    }[/code:1:873462c143]
  • Als je meerdere malen dezelfde functie wilt uitvoeren in de onsubmit kan je deze samenvoegen in een nieuwe functie.

    [code:1:96165de471]
    <script type="text/javascript">
    function checkinputs()
    {
    var args = arguments, i = arguments.length, retval = true;
    while(i–)
    {
    retval = retval && doanothercheck(arguments[i]);
    }
    return retval;
    }
    </script>

    <form onsubmit="return checkinputs(this.link_text, this.naam)">
    [/code:1:96165de471]

    Een andere methode is door de uitkomsten van de functies 'op te tellen'. Bijvoorbeeld:

    [code:1:96165de471]
    <form onsubmit="return (dit() && dat())">
    [/code:1:96165de471]

    Overigens zitten er inderdaad wat fouten in je functie. Op plekken waar de input correct is, zal je true moeten retourneren.

    [code:1:96165de471]
    function doanothercheck(form) {
    if(form.value.length < 1) {
    alert("Please enter something.");
    return false;
    }
    if(form.value.search(mikExp) == -1) {
    alert("Correct Input");
    return true;
    }
    else {
    alert("Sorry, but the following characters\n\r\n\r@ $ % ^ & * # ( ) [ ] \\ { + } ` ~ = | \n\r\n\rare not allowed!\n");
    form.select();
    form.focus();
    return false;
    }
    alert("Correct Input");
    return true;
    }
    [/code:1:96165de471]

    En nog een tip: bij onkeyup/onchange/onmouseover/etc is het niet correct om de taal te vermelden. Dus:
    [code:1:96165de471]
    <input onkeyup="dit()">
    [/code:1:96165de471]

    Nu het script werkt, zal je wel merken dat de meldingen niet echt meer logisch zijn.
  • Bedankt! Het werkt inderdaad goed en geeft mij wat meer inzicht hoe javascript werkt.

    Ik was op zoek naar dit: <form onsubmit="return (dit() && dat())">

    maar experimenteer ook met deze:

    [code:1:94dbe22d02]
    <script type="text/javascript">
    function checkinputs()
    {
    var args = arguments, i = arguments.length, retval = true;
    while(i–)
    {
    retval = retval && doanothercheck(arguments[i]);
    }
    return retval;
    }
    </script>[/code:1:94dbe22d02]


    Nog 1 vraag: kun je uitleggen wat de – betekend in while(i–)
  • [quote:8f3388a8eb="Jan_32"]Nog 1 vraag: kun je uitleggen wat de – betekend in while(i–)[/quote:8f3388a8eb]Niets meer en niets minder dan:[code:1:8f3388a8eb]i = i - 1;[/code:1:8f3388a8eb]Nu heb ik ook een vraagje aan Annie met betrekking tot de volgende regel code: [code:1:8f3388a8eb]retval = retval && doanothercheck(arguments[i]);[/code:1:8f3388a8eb]Wat doet [i:8f3388a8eb]retval = reval[/i:8f3388a8eb] hier? Begrijp ik goed dat je [i:8f3388a8eb]retval && doanothercheck(arguments)[/i:8f3388a8eb] vergelijkt en de waarde van die vergelijking weer in retval stopt? Wel een creatieve oplossing. (Ik programmeer zelden in JavaScript, hopelijk valt het niet te veel op.) Op het eerste gezicht vond ik het namelijk een vreemd stukje code, maar van jouw hand zal het wel kloppen. <img alt=";)" src="/plugins/sceditor/emoticons/wink.png" />

    - Bas

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.