CINXE.COM

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" /> <link rel="icon" href="http://www.kb.nl/favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" type="image/x-icon" href="https://www.kb.nl/favicon.ico" /> <link href="https://www.kb.nl/styles/global.css" rel="stylesheet" type="text/css" /> <link href="https://www.kb.nl/styles/print.css" rel="stylesheet" type="text/css" media="print" /> <script src="https://www.kb.nl/scripts/global.js" language="JavaScript" type="text/javascript"> </script> <style type="text/css"> .webform { } .webform .field, .webform .interest, .webform .uploadfield { margin-top: 6px; clear: both; } .webform .label { overflow: hidden; text-overflow: ellipsis; padding-top: 3px; white-space: nowrap; width: 200px; float: left; } .webform .label .colon { display: inline; } .webform .label .required, .webform .field .checkbox .required { display: inline; margin-left: 5px; } .webform .field .data, .webform .interest .data, .webform .uploadfield .data { margin-left: 210px; padding-top: 3px; } .webform>.field>.data, .webform>.interest>.data, .webform>.uploadfield>.data { margin-top: 0; } .webform .field .data .text, .webform .field .data .password, .webform .interest .data, .webform .uploadfield .data, .webform .field .data .multiline { width: 200px; } .webform .uploadfield .data img { border: 0px; width: 200px; } .webform .field .data .radiobuttons label { display: block; } .webform .error { margin-top: 5px; font-weight: bold; } .webform .button { clear: both; margin-top: 6px; margin-left: 210px; } .webform .button input { } .interest .data input, .field .checkbox input { margin-left: 0px; } .webform #recaptcha { margin-left: 210px; padding-top: 3px; } </style></head> <body id="overkb"> <div id="container"> <div id="header"> <img src="http://dbnl.org/images/dbnl_logo_s.png" width="495" height="43" alt="DBNL-logo" longdesc="http://www.DBNL.org" /> </div> <div id="ribbon-boven"> </div> </div> <table width="495" cellspacing="0" cellpadding="0" align="center"> <tbody> <tr> <td width="485" class="content" style="padding-left:10px"><div id="titel"> <div> <div>&nbsp;</div> </div> <p class="active"><span style="color: #907201; font-size: x-large;"><span style="font-size: large;">&nbsp;</span></span></p> </div> <p><form method='post' enctype="multipart/form-data" action='https://formulieren.kb.nl/?webform=41' name='webform_41'><div class="webform" id="webform_41"> <div class="field even " id="field_c9853501c599413e24ec25348b1e7f1b" style="display: block;"> <div class="label">E-mailadres<div class="colon">:</div> <div class="required">*</div> </div> <div class="data"><input class="text" type="text" id="c9853501c599413e24ec25348b1e7f1b" name="c9853501c599413e24ec25348b1e7f1b" value="" maxlength="50" placeholder=""></div> </div> <div class="button"><input type="submit" value="Verzenden"></div> </div> </form><script type="text/javascript"> /** * Script for webforms. */ /** * List of error messages * @var array */ var webform_error_messages = {"required_field_missing":"Geen waarde ingevuld in veld %field.","email_field_wrong":"Geen geldig e-mailadres ingevuld in veld %field.","number_field_wrong":"Geen geldig nummer ingevuld in veld %field.","tel_field_wrong":"Het veld '%field' bevat niet alleen numerieke waarden, maar ook optionele -, + tekens.","date_field_wrong":"Geen datum ingevuld in veld %field.","dateselect_field_wrong":"Geen geldige datum ingevuld in veld %field.","datetime_field_wrong":"Het veld '%field' bevat geen datum en tijd.","datetimeselect_field_wrong":"Het veld '%field' bevat geen geldige datum en tijd.","passwords_do_not_match":"Niet twee keer hetzelfde wachtwoord ingevuld bij veld %field.","uploadfield_field_wrong":"De file in '%field' is niet van het juiste format of is groter dan de maximale upload grootte.","captchafield_field_wrong":"Het Captcha-veld is fout. Probeer het opnieuw.","text_field_wrong":"Het veld '%field' heeft niet het juiste formaat."} /** * Error checker array. The functions that runs when the form is submitted. */ var webform_error_checkers = new Array(); /** * The current language we are using. * @var String */ var webform_language = "nl_NL"; /** * This function is called to initialize a webform * @param string ID of the webform * @param fields The fields in the form */ function initWebform(webformID, fields) { // register a handler for the form var formname = 'webform_'+webformID; // get a form element var form = document.forms[formname]; // sometimes we want to find element by it's id var findElementById = function(id) { // array that we will use to keep track elements to check var elements = []; // we always start from form element elements.push(form); // we want to check all elements (and we have at least one on start) do { // get the current element var current = elements.shift(); // check if we found an element if (current.getAttribute('id') == id) return current; // get element childs var children = current.children; // push all childrens into elements array for(var i = 0; i < children.length; i++) elements.push(children[i]); } while(elements.length > 0); // we did not found a desired element return null; } // sometimes we want to get elements by names function findElementsByName(name) { // elements to check var elements = []; // result to return var results = []; // start from form elements.push(form); do { // get the current element var current = elements.shift(); // check if current element have desired name if (current.getAttribute('name') == name) results.push(current); // get the children of current element var children = current.children; // add all childrens to elemetnts to check for (var i = 0; i < children.length; i++) elements.push(children[i]); } while(elements.length > 0); // return results return results; } // Add error checkers to specific elements. for (id in fields) { // locate field. var field = fields[id]; // locate element var element = findElementById(id); // Add a error checker. webform_add_error_checker(element, field); // if we have a regex, add a checker if (field.regex) webform_add_regex_checker(element, field); } // does this webform has a captcha? var hasCaptcha = document.getElementById('recaptcha') != null; // process the form var doProcessForm = function(event) { // array of encountered errors var errors = []; // Loop trough the fields and attach input checks. for (id in fields) { // leap out if we already discovered too many errors if (errors.length >= 4) break; // Locate field. var field = fields[id]; var value = false; var element = findElementById(id); // Value of dropdown. if (field.type == "dropdown") { var selectIndex = element.selectedIndex; value = element.options[selectIndex].text; } else if (field.type == "password_repeat") { // matching field if (document.getElementById(element.id).value != findElementById(id+'_repeat').value) { // an error was detected errors.push(get_webform_error_message('passwords_do_not_match', {field: field.label})); // continue to the next field. continue; } value = document.getElementById(element.id).value; } else if (field.type == "interest") { // Value for the interest field value = element.checked; } else if (field.type == "uploadfield") { // Value for the uploadfield. value = document.getElementById(element.id).value; } else if (field.type == "radio_buttons") { // for radio buttons we need to get the (inputs) options by name because the inputs have an id of id_x var options = findElementsByName(id); for (var i=0; i < options.length; i++) { if (!options[i].checked) continue; value = options[i].value; } } else if (field.type == "checkbox") { if (element.checked) { value = document.getElementById(element.id).value } else { value = ''; } } else { // Value of all other inputs. value = document.getElementById(element.id).value; } // Is case sensitive/strict mode enabled for this field? if (field.casesensitive) { // Trim the value for text fields value = webform_trim_value(document.getElementById(element.id).value); } // check if this field is required and not filled in if (field.required && !value) { // an error was detected errors.push(get_webform_error_message('required_field_missing', {field: field.label})); // continue to the next field. continue; } // check if there is a error checker waiting. var checker = webform_error_checkers[id]; // Check if the checker is something and run it, when true returns there is nothing wrong. if (checker && !checker()) { errors.push(get_webform_error_message(field.type+'_field_wrong', {field: field.label})); } } // ok if no errors were found if (errors.length == 0) { // convert any date fields to the english date format. for (id in fields) { // Locate field. var field = fields[id]; if (field.type != "date") continue; // get the element var element = findElementById(id); // Convert the date format. document.getElementById(element.id).value = webform_convert_date(document.getElementById(element.id).value, webform_language); } return true; } // generate error message var message = ''; for (var i=0; i<errors.length; i++) { // append to message message += errors[i]+"\n"; } // show error message var popAlert = window.alert; popAlert(message); if(hasCaptcha) grecaptcha.reset(); // cancel submit if (event) { event.returnValue = false; event.preventDefault(); // re-enable the submit button event.submitter.removeAttribute("disabled"); } return false; }; // handle the onsubmit event, store the event in a variable to pass it to other functions later document.forms[formname].onsubmit = function(event) { // disable the submit button event.submitter.setAttribute("disabled", "disabled"); // if captcha is enabled, check captcha first. // check if there is a grecaptcha response if (hasCaptcha && grecaptcha.getResponse() == "") window.alert(get_webform_error_message('captchafield_field_wrong')); // process the form return doProcessForm(event); } } /** * Function to get an error message * @param string Identifier of the error * @param array Associative array of variables that need to be filled in */ function get_webform_error_message(identifier, vars) { var popAlert = window.alert; var string = webform_error_messages[identifier]; if (string == undefined) popAlert(identifier); for (var name in vars) string = string.replace('%'+name, vars[name]); return string; } /** * Add's input control functionality to the user input. * @param html object * @param field object */ function webform_add_error_checker(element, field) { switch (field.type) { case "text": break; case "password": break; case "email": webform_error_checkers[element.id] = function() { // not required and empty? if (!field.required && document.getElementById(element.id).value.trim() == "") return true; return webform_email_check(element); }; break; case "tel": webform_error_checkers[element.id] = function() { // not required and empty? if (!field.required && document.getElementById(element.id).value.trim() == "") return true; return webform_phone_check(element); }; break; case "number": webform_error_checkers[element.id] = function() { // not required and empty? if (!field.required && !document.getElementById(element.id).value.length) return true; return webform_number_check(element); }; break; case "date": webform_error_checkers[element.id] = function() { // not required and empty? if (!field.required && document.getElementById(element.id).value.trim() == "") return true; return webform_date_check(element); } // Change the date from yyyy-mm-dd to the date of the current language. document.getElementById(element.id).value = webform_convert_date(document.getElementById(element.id).value, webform_language); break; case "dateselect": webform_error_checkers[element.id] = function() { // not required and empty? if (!field.required && document.getElementById(element.id).value.trim() == "") return true; return webform_dateselect_check(element); } break; case "datetime": webform_error_checkers[element.id] = function() { // not required and empty? if (!field.required && document.getElementById(element.id).value.trim() == "") return true; return webform_datetime_check(element); } break; case "datetimeselect": webform_error_checkers[element.id] = function() { // not required and empty? if (!field.required && document.getElementById(element.id).value.trim() == "") return true; return webform_datetimeselect_check(element); } break; case "uploadfield": webform_error_checkers[element.id] = function() { // not required and empty? if (!field.required && document.getElementById(element.id).value.trim() == "") return true; return webform_upload_check(element, field); } break; } } /** * This function adds a checker function to an element to see if the value * matches the given regex. This check needs to happen alongside any other * checks that are defined for the element, so if a checker already exists * this function will use that existing check to build a composite checker * function and append the combined checker to the webform element. * @param html object * @param field object */ function webform_add_regex_checker(element, field) { // store the new checker in a variable var new_checker = function() { // not required and empty? if (!field.required && document.getElementById(element.id).value.trim() == "") return true; // get the value var value = document.getElementById(element.id).value; // the value cannot be longer than 100 chars to keep regex functionality safe if (value.length >= 100) return false; // store the raw regex of the field var raw_regex = field.regex; // check if the full regex was delivered instead of a regex pattern if (raw_regex.charAt(0) == '/' && raw_regex.lastIndexOf('/') != 0) { // get the pattern of the regex (between the first and last delimiter) var pattern = raw_regex.slice(1,raw_regex.lastIndexOf("/")); // get the flags var flags = raw_regex.slice(raw_regex.lastIndexOf("/") + 1); // construct the regex object with the flag var regex = new RegExp(pattern, flags); } // we only have a pattern else { // construct the regex object with the pattern var regex = new RegExp(raw_regex); } // get the matches between the regex and the field value var match = value.match(regex); // check if the value matches the field regex return match != null && value == match[0]; } // check if we already have a checker for this element if (element.id in webform_error_checkers) { // if this is the case, store the old checker in a variable var old_checker = webform_error_checkers[element.id]; // combine the two var comb_checker = function() { return old_checker() && new_checker(); } // store the combined checker webform_error_checkers[element.id] = comb_checker; } else { // we have no checker yet, store the new one webform_error_checkers[element.id] = new_checker; } } /** * This function checks if an element value is an email. * @param element * @return boolean */ function webform_email_check(element) { var value = document.getElementById(element.id).value; return value.match(/^[a-zA-Z0-9_*]+([+._\-][_*a-zA-Z0-9]+)*[-]*@[a-zA-Z0-9]+([._\-][a-zA-Z0-9]+)*\.[a-zA-Z]{2,10}$/); } /** * This function checks if a element value is a phone number * @param element * @return boolean */ function webform_phone_check(element) { var value = document.getElementById(element.id).value; return value.match(/^([0-9\-()\/\+\.\s])+$/); } /** * This function checks if a element value is a number. * @param element * @return boolean */ function webform_number_check(element) { var value = document.getElementById(element.id).value; return value.match(/(^\d+$)|^$/); } /** * This function checks if an element value is a date. * @param element * @return boolean */ function webform_date_check(element) { var value = document.getElementById(element.id).value; // When a field is empty, the answer is always true. if (value == "") return true; switch (webform_language) { case "english": return value.match(/^((19|20)\d\d)[- /.](0[0-9]|1[012]|[0-9])[- /.]([1-9]|[012][0-9]|3[01])$/); break; default: // The rest, dutch, german, italian, russian, greece, etc are using the europian dd-mm-yyyy style. return value.match(/^([1-9]|[012][0-9]|3[01])[- /.](0[0-9]|1[012]|[0-9])[- /.]((19|20)\d\d)$/); break; } } /** * This function checks if an element value is a time. * !!! The format used here is the official SQLite datetime, this is so that it can be stored in a datetime row * @param element * @return boolean */ function webform_datetime_check(element) { var value = document.getElementById(element.id).value; // When a field is empty, the answer is always true. if (value == "") return true; // the following regex is very strict because the entered string MUST fit the SQL datetime format in order to be accepted by a database return value.match(/^((19|20)\d\d)-(0[0-9]|1[012]|[0-9])-([1-9]|[012][0-9]|3[01]) ([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/); } /** * This function checks if a date select value is a date. * @param element * @return boolean */ function webform_dateselect_check(element) { var value = document.getElementById(element.id).value; var year = document.getElementById(element.id+'_year').value; var month = document.getElementById(element.id+'_month').value; var day = document.getElementById(element.id+'_day').value; if ((month == 2 || month == 4 || month == 6 || month == 9 || month == 11) && day == 31) return false; else if (month == 2 && day == 30 && year != 8228) // extra leap year return false; else if (month == 2 && day == 29 && year != 8228) return (new Date(year, 1, 29).getDate() == 29); // months start counting at zero else return true; } /** * This function checks if a time select value is a time. * @param element * @return boolean */ function webform_datetimeselect_check(element) { var value = document.getElementById(element.id).value; // use the date checker to validate years and months if (!webform_dateselect_check(element)) return false; var hour = document.getElementById(element.id+'_hour').value; var minute = document.getElementById(element.id+'_minute').value; if (hour >= 0 && hour <= 23 && minute >= 0 && minute <= 59) return true; return false; } /** * This function checks if the uploaded file is correct. * @param element * @return boolean */ function webform_upload_check(element, field) { var uploadElement = document.getElementById(element.id); var value = uploadElement.value; // When a field is empty, the answer is always true. if (value == "") return true; // Generate file extensions based on the mimetypes. var extensions = new Array(); for (var i=0; i < field.mimetypes.length; i++) { var mimetype = field.mimetypes[i]; var pre = mimetype.split('/')[0]; var post = mimetype.split('/')[1]; // Find the appriopate extension for this mimetype. if (pre == "image") { extensions.push(post); } else if (pre == "application") { if (post.match("excel")) { extensions.push('xls'); extensions.push('xlsx'); } else if (post.match("word")) { extensions.push('doc'); extensions.push('docx'); } else if (post.match("pdf")) extensions.push("pdf"); else if (post.match("zip")) extensions.push("zip"); } } // Extract the extension of the file. var ext = value.slice(value.lastIndexOf('.')+1).toLowerCase(); // Are we limited to extensions? if (extensions.length > 0) { // See if we can find the extension. var found = false; for (var i = 0; i < extensions.length; i++) { if (extensions[i] == ext) found = true; } // Our extension isn't found, throw a error. if (!found) return false; } // check the max upload size if (field.maxsize) { // calculate the byte size the max size in kilobytes var maxBytes = field.maxsize * 1024; // do we exceed the maximum upload size? if (uploadElement.files.length > 0 && uploadElement.files[0].size > maxBytes) return false } // The file is correct. return true; } /** * Change the format of the date from or to yyyy-mm-dd. * Use the to parameter to select the date format destination. * @param string * @param string * @return string */ function webform_convert_date(date, to) { // If there is no date provided, then there is nothing to do. if (date == "") return ""; // The use regular expressions. var english = /^((19|20)\d\d)([- /.])(0[0-9]|1[012]|[0-9])[- /.]([1-9]|[012][0-9]|3[01])(\s+[012]?[0-9]:[0-5]?[0-9])?$/; var europe = /^([1-9]|[012][0-9]|3[01])([- /.])(0[0-9]|1[012]|[0-9])[- /.]((19|20)\d\d)(\s+[012]?[0-9]:[0-5]?[0-9])?$/; // The working variables. var matches = false; var year = 0; var month = 0; var day = 0; var separator = "-"; // Is the source in europian style? DD-MM-YY if (matches = date.match(europe)) { year = matches[4]; separator = matches[2]; month = matches[3]; day = matches[1]; } else if(matches = date.match(english)) { year = matches[1]; separator = matches[3]; month = matches[4]; day = matches[5]; } switch (to) { case "english": return year+separator+month+separator+day; default: return day+separator+month+separator+year; } } /** * Save the selected date to the hidden field. * @param string * @return string */ function recalculateDate(identifier) { var separator = "-"; // calculate the year var yearEl = document.getElementById(identifier+'_year'); var selectIndex = yearEl.selectedIndex; var year = yearEl.options[selectIndex].text; // calculate the month var monthEl = document.getElementById(identifier+'_month'); var selectIndex = monthEl.selectedIndex; var month = monthEl.options[selectIndex].text; // calculate the day var dayEl = document.getElementById(identifier+'_day'); var selectIndex = dayEl.selectedIndex; var day = dayEl.options[selectIndex].text; // concat the date document.getElementById(identifier).value = year+separator+month+separator+day; } /** * Save the selected Time to the hidden field * @param string * @return string */ function recalculateDateTime(identifier) { // calculate the year var yearEl = document.getElementById(identifier+'_year'); var selectIndex = yearEl.selectedIndex; var year = yearEl.options[selectIndex].text; // calculate the month var monthEl = document.getElementById(identifier+'_month'); var selectIndex = monthEl.selectedIndex; var month = monthEl.options[selectIndex].text; // calculate the day var dayEl = document.getElementById(identifier+'_day'); var selectIndex = dayEl.selectedIndex; var day = dayEl.options[selectIndex].text; // calculate the hour var hourEl = document.getElementById(identifier+'_hour'); var selectedIndex = hourEl.selectedIndex; var hour = hourEl.options[selectedIndex].text; // calculate the minute var minuteEl = document.getElementById(identifier+'_minute'); var selectedIndex = minuteEl.selectedIndex; var minute = minuteEl.options[selectedIndex].text; // concat the datetime, add ':00' at the end in order to fit the SQL datetime format document.getElementById(identifier).value = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":00"; } /** * Remove the whitespace left and right from the value. * @param string to trim * @return string */ function webform_trim_value(value) { // First replace the whitespace on the left and right with nothing. return value.replace(/^\s+/g,'').replace(/\s+$/g, ''); } </script> <script type="text/javascript"> // initialize the webform initWebform("41", {"c9853501c599413e24ec25348b1e7f1b":{"key":true,"required":true,"field":"Emailadres","label":"E-mailadres","type":"email","casesensitive":false,"regex":""}}); </script> <br />De velden met een * zijn <strong>verplicht.</strong><br /><br /><strong>Aanmelden</strong><br />Na aanmelding ontvangt u een e-mail waarin een link naar een bevestigingspagina is opgenomen. Pas als u op deze pagina uw aanmelding heeft bevestigd, wordt u opgenomen in onze verzendlijst. <br /><br /><strong>Afmelden of gegevens wijzigen</strong><br />Als u zich wilt afmelden of bestaande gegevens wilt wijzigen, dient u hierboven het e-mailadres in te vullen waaronder u bij DBNL bekend bent. Vervolgens ontvangt u een e-mail waarin een link naar een wijzigings-/afmeldpagina is opgenomen.<br /><br />Let op: het kan enkele minuten duren voor u de e-mail ontvangt en deze kan onbedoeld in uw ongewenste mail terechtkomen.</p> <br /> Zie voor het verwerken van uw persoonsgegevens onze <a href="https://www.dbnl.org/overdbnl/privacyverklaring.php" rev="template_link_162">Privacyverklaring</a></td> </tr> </tbody> </table> <script type="text/javascript">var clickHandler = function() { /** * Attach an event handler to an event, crossbrowser * @param HtmlDomElement element * @param string event to listen to * @param function function to execute */ var addEvent = function(element, name, func) { // this might be a browser or could be IE if (window.addEventListener || document.addEventListener) element.addEventListener(name, func, true); else if (window.attachEvent) element.attachEvent('on'+name, func); } /** * Initialize the click registration system */ var initialize = function() { // Get all aTags var aTags = document.getElementsByTagName('a'); // regex to test for valid hyperlink var protocol = new RegExp('^https?:\\/\\/'); // get the length var length = aTags.length; // and attach a handler to each of them for (var i = 0; i < length; i++) { // Get the tag var tag = aTags.item(i); // does this tag have a valid hyperlink if (!tag.href || tag.href.length == 0) continue; // is it a http:// or https:// link if (!protocol.test(tag.href)) continue; // everything is fine register the event addEvent(tag, 'mouseout', restoreHref); addEvent(tag, 'mousedown', registerClick); } } /** * Check if a link is a local anchor * @param string the url to check * @return boolean is the url local */ var isLocalAnchor = function(url) { // location of anchor sign in string var anchor; // locate the anchor sign in the url if ((anchor = url.indexOf('#')) == -1) return false; // strip the anchor part url = url.substring(0, anchor); if ((anchor = window.location.href.indexOf('#')) == -1) return url = window.location.href; else return url = window.location.href.substring(0, anchor); } /** * Register a click on a hyperlink * @param HtmlEvent event object */ var registerClick = function(event) { // get the target var linkElement = typeof event.currentTarget == 'object' ? event.currentTarget : event.srcElement; // Get the body tag for later comparison var body = document.getElementsByTagName('body').item(0); // Make sure we have the right element while (linkElement.nodeName.toLowerCase() != 'a') { // get the parent node linkElement = linkElement.parentNode; // is this the body, then return if (linkElement === body) return; } // if the target is local, don't mess with it if (isLocalAnchor(linkElement.href)) return; // prevent default action from being executed if (typeof event.preventDefault == 'function') event.preventDefault(); else event.returnValue = false; // get the link identifier and original url var linkID = encodeURIComponent(linkElement.rev ? linkElement.rev : linkElement.href); var original = encodeURIComponent(linkElement.href); // construct the url var url = '?registerClick='+linkID+'&url='+original; // store the original href linkElement.oldHref = linkElement.href; // set the new href linkElement.href = url; } /** * Restore the original href of a hyperlink * @param HtmlEvent event object */ var restoreHref = function(event) { // get the target var linkElement = typeof event.currentTarget == 'object' ? event.currentTarget : event.srcElement; // Get the body tag for later comparison var body = document.getElementsByTagName('body').item(0); // Make sure we have the right element while (linkElement.nodeName.toLowerCase() != 'a') { // get the parent node linkElement = linkElement.parentNode; // is this the body, then return if (linkElement === body) return; } // check if the oldhref exists if (typeof linkElement.oldHref == 'undefined') return; // reset the oldhref linkElement.href = linkElement.oldHref; } /** * Initialize the clickHandler */ initialize(); }(); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10