Ga naar inhoud
  • 0

funtie via OnSubmit voor 2e keer aanroepen


anoniem

Vraag

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]
Link naar reactie

4 antwoorden op deze vraag

Aanbevolen berichten

  • 0
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.
Link naar reactie
  • 0
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--)
Link naar reactie
  • 0
[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])[/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. ;) - Bas
Link naar reactie
  • 0
[quote:99c4acd930="BasHamar"]Niets meer en niets minder dan:[code:1:99c4acd930]i = i - 1;[/code:1:99c4acd930][/quote:99c4acd930] Nou ja, het is wel iets meer dan alleen dat. "i--" is de post decrement (aftellen nadat de waarde is doorgegeven) en zo is er ook nog de pre decrement, "--i". Vergelijk: [code:1:99c4acd930] <script type="text/javascript"> i = 5; document.write (i--); // 5 document.write (i); // 4 i = 5; document.write (--i); // 4 document.write (i); // 4 </script> [/code:1:99c4acd930] [quote:99c4acd930="BasHamar"]Nu heb ik ook een vraagje aan Annie met betrekking tot de volgende regel code: [code:1:99c4acd930]retval = retval && doanothercheck(arguments[i]);[/code:1:99c4acd930]Wat doet [i:99c4acd930]retval = reval[/i:99c4acd930] hier? Begrijp ik goed dat je [i:99c4acd930]retval && doanothercheck(arguments[i])[/i:99c4acd930] vergelijkt en de waarde van die vergelijking weer in retval stopt? [/quote:99c4acd930] In javascript werkt een booleaanse AND zodanig dat als de eerste operand true is, dan wordt de waarde van de tweede operand teruggegeven. In het geval de eerste operand false is, dan wordt de tweede operand niet geëvalueerd. Met de logische OR kan je ook 'geinige' constructies uithalen, die je vast wel eens bent tegengekomen: [code:1:99c4acd930] <script type="text/javascript"> function a(b) { var c = b || 'default'; document.write (c); } a('iets'); // iets a(); // default </script> [/code:1:99c4acd930]
Link naar reactie

Doe mee aan dit gesprek

Om te reageren, moet je eerst inloggen. Dit doe je door rechtsboven op inloggen te klikken.

Gast
Antwoord op deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...