Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[Javascript] Validatie

Anoniem
Elmarinho
2 antwoorden
  • Wat in onderstaande validatie code (javascript) zorgt ervoor dat gegevens niet verwerkt worden zodra velden niet zijn ingevuld? Als ik namelijk een nieuwe optie op de verzend knop wil toevoegen (go to URL) doe ik bij de if(errors) statement MM_GoToURL = false; dan gaat ie idd niet naar de URL en geeft ie nog steeds errors bij niet ingevulde velden maar vervolgens krijg ik wel de gegevens binnen/deze worden wel verwerkt - dit heb ik alleen als GoToURL aanstaat! Dit moet immers niet. Vandaar is mijn vraag aan jullie: wat zorgt ervoor in mijn code dat gegevens niet worden verwerkt als er velden missen, zodat ik die ff op false ofzo kan zetten. Dan kan ik in ieder geval weer ff vooruit met brainstormen, kom er zelf niet achter :evil:

    Javascript code
    [code:1:78ede16edb]
    <script type="text/javascript">
    <!–
    function MM_validateForm() { //v4.0
    if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
    if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    if (p<1 || p==(val.length-1)) errors+='- '+nm+' is geen geldig e-mailadres.
    ';
    } else if (test!='R') { num = parseFloat(val);
    if (isNaN(val)) errors+='- '+nm+' is geen geldig telefoonnummer.
    ';
    if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
    min=test.substring(8,p); max=test.substring(p+1);
    if (num<min || max<num) errors+='- '+nm+' is geen geldig telefoonnummer.
    ';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is verplicht.
    '; }
    } if (errors)
    {
    alert('Registratie kan niet worden voltooid:
    '+errors);
    }
    else
    {
    alert('Bedankt voor het aanmelden!');
    }
    document.MM_returnValue = (errors == '');
    } }
    //–>
    </script><style type="text/css">
    [/code:1:78ede16edb]

    Totale code (hele document)
    [code:1:78ede16edb]<?php
    class maxGuestbook{
    var $messageDir = '1975';
    var $dateFormat = 'Y-m-d g:i:s A';
    var $itemsPerPage = 5;
    var $messageList;

    function processGuestbook(){
    if (isset($_POST['submit'])) {
    $this->insertMessage();
    }
    $page = isset($_GET['page']) ? $_GET['page'] : 1;

    $this->displayGuestbook($page);
    }

    function getMessageList(){

    $this->messageList = array();

    // Open the actual directory
    if ($handle = @opendir($this->messageDir)) {
    // Read all file from the actual directory
    while ($file = readdir($handle)) {
    if (!is_dir($file)) {
    $this->messageList[] = $file;
    }
    }
    }

    rsort($this->messageList);

    return $this->messageList;
    }

    function displayGuestbook($page=1){
    $list = $this->getMessageList();
    //echo "<center><a href='add.php'>Leave a message</a></center>";
    echo "<table class='newsList'>";

    //Get start point and end point
    $startItem = ($page-1)*$this->itemsPerPage;
    if (($startItem + $this->itemsPerPage) > sizeof($list)) $endItem = sizeof($list);
    else $endItem = $startItem + $this->itemsPerPage;

    for ($i=$startItem;$i<$endItem;$i++){
    //foreach ($list as $value) {
    $value = $list[$i];
    $data = file($this->messageDir.DIRECTORY_SEPARATOR.$value);
    $naam = trim($data[0]);
    $achternaam = trim($data[1]);
    $woonplaats2 = trim($data[5]);
    $email = trim($data[6]);
    unset ($data['0']);
    unset ($data['1']);
    unset ($data['5']);
    unset ($data['6']);

    $content = "";
    foreach ($data as $value) {
    $content .= $value;
    }
    echo "<tr><td colspan='2'><strong>Naam:</strong> $naam $achternaam <strong>| Woonplaats destijds:</strong> $woonplaats2 <strong> | <a href=\"mailto:$email\">mail $naam!</a><br/></td></tr></strong>";
    }
    echo "</table>";
    if (sizeof($list) == 0){
    echo "<center><p>Nog geen aanmeldingen uit het examenjaar 1975!</p><p></p></center>";
    }
    // Create pagination
    if (sizeof($list) > $this->itemsPerPage){
    echo "<div id=\"navigation\">";
    if ($startItem == 0) {
    if ($endItem < sizeof($list)){
    echo "<div id=\"nright\"><a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\" >Volgende &raquo;</a></div>";
    } else {
    // Nothing to display
    }
    } else {
    if ($endItem < sizeof($list)){
    echo "<div id=\"nleft\"><a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\" >&laquo; Vorige |</a><a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\" >| Volgende &raquo;</a></div>";
    } else {
    echo "<div id=\"nleft\"><a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\" >&laquo; Vorige</a></div>";
    }
    }

    echo "</div><br/>";
    }
    echo "<hr />";
    $this->displayAddForm();
    }

    function displayAddForm(){
    ?>
    <script type="text/javascript">
    <!–
    function MM_validateForm() { //v4.0
    if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
    if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    if (p<1 || p==(val.length-1)) errors+='- '+nm+' is geen geldig e-mailadres.
    ';
    } else if (test!='R') { num = parseFloat(val);
    if (isNaN(val)) errors+='- '+nm+' is geen geldig telefoonnummer.
    ';
    if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
    min=test.substring(8,p); max=test.substring(p+1);
    if (num<min || max<num) errors+='- '+nm+' is geen geldig telefoonnummer.
    ';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is verplicht.
    '; }
    } if (errors)
    {
    alert('Registratie kan niet worden voltooid:
    '+errors);
    }
    else
    {
    alert('Bedankt voor het aanmelden!');
    }
    document.MM_returnValue = (errors == '');
    } }
    //–>
    </script><style type="text/css">
    <!–
    a:link {
    text-decoration: none;
    }
    a:visited {
    text-decoration: none;
    }
    a:hover {
    text-decoration: none;
    }
    a:active {
    text-decoration: none;
    }
    –>
    </style>
    <form class="iform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <div align="left">
    <p>Aanmelden? Dat kan! Vul in uw gegevens en uw naam komt in bovenstaande lijst van aanwezigen!<br/>
    </p>
    <table width="658" border="0">
    <tr>
    <td width="90">Voornaam</td>
    <td width="194"><input type="text" name="naam" size="23" id="naam"/></td>
    <td width="176">Woonplaats heden</td>
    <td width="180"><input type="text" name="woonplaats1" size="23" id="woonplaats1"/></td>
    </tr>
    <tr>
    <td>Achternaam</td>
    <td><input type="text" name="achternaam" size="23" id="achternaam"/></td>
    <td>Woonplaats destijds</td>
    <td><input type="text" name="woonplaats2" size="23" id="woonplaats2"/></td>
    </tr>
    <tr>
    <td>Adres</td>
    <td><input type="text" name="adres" size="23" id="adres"/></td>
    <td>Email</td>
    <td><input type="text" name="email" size="23" id="email"/></td>
    </tr>
    <tr>
    <td>Telefoon</td>
    <td><input type="text" name="telefoon" size="23" id="telefoon"/></td>
    <td>Examenjaar</td>
    <td><label>
    <select name="examenjaar" id="examenjaar">
    <option>1975</option>
    </select>
    </label></td>
    </tr>
    </table>
    <p align="left"><br/>
    <input name="submit" type="submit" onclick="MM_validateForm('naam','','R','woonplaats1','','R','achternaam','','R','woonplaats2','','R','adres','','R','email','','RisEmail','telefoon','','RisNum');return document.MM_returnValue" value="Verzenden" />
    </p>
    </div>
    </form>

    <?php
    }

    function insertMessage(){
    $naam = isset($_POST['naam']) ? $_POST['naam'] : '';
    $achternaam = isset($_POST['achternaam']) ? $_POST['achternaam'] : '';
    $adres = isset($_POST['adres']) ? $_POST['adres'] : '';
    $telefoon = isset($_POST['telefoon']) ? $_POST['telefoon'] : '';
    $woonplaats1 = isset($_POST['woonplaats1']) ? $_POST['woonplaats1'] : '';
    $woonplaats2 = isset($_POST['woonplaats2']) ? $_POST['woonplaats2'] : '';
    $email = isset($_POST['email']) ? $_POST['email'] : '';
    $examenjaar = isset($_POST['examenjaar']) ? $_POST['examenjaar'] : '';

    if (trim($naam) == '') $naam = '';

    $filename = date('Y-m-d-H-i-s');
    if (!file_exists($this->messageDir)){
    mkdir($this->messageDir);
    }
    $f = fopen($this->messageDir.DIRECTORY_SEPARATOR.$filename.".txt","w+");
    fwrite($f,$naam."
    ");
    fwrite($f,$achternaam."
    ");
    fwrite($f,$adres."
    ");
    fwrite($f,$telefoon."
    ");
    fwrite($f,$woonplaats1."
    ");
    fwrite($f,$woonplaats2."
    ");
    fwrite($f,$email."
    ");
    fwrite($f,$examenjaar."
    ");
    fclose($f);

    }
    }
    ?>[/code:1:78ede16edb]

















  • Het gaat om twee stukjes code:
    [code:1:9682b13568]document.MM_returnValue = (errors == '');[/code:1:9682b13568]
    Dit zet document.MM_returnValue op de waarde die (errors == '') oplevert (true als errors leeg is, anders false).

    [code:1:9682b13568]<input name="submit" type="submit" onclick="MM_validateForm('naam','','R','woonplaats1','','R','achternaam','','R','woonplaats2','','R','adres','','R','email','','RisEmail','telefoon','','RisNum');return document.MM_returnValue" value="Verzenden" />[/code:1:9682b13568]
    Na een klik op "Verzenden" wordt het formulier gevalideerd, daarna wordt de waarde van document.MM_returnValue "gereturned". Als deze false is wordt het formulier niet verstuurd. Als deze true is wel.

Beantwoord deze vraag

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