nck2040
Legacy Member
Ik heb vandaag een form validatie gemaakt , maar het is nog niet helemaal wat het moet zijn. Als een vak niet ingevuld is dienen de tekstvakken rood te worden en dan doen ze ook, maar slechts 1 sec als je op de 'submit' knop drukt. Het rood zou dus moeten blijven staan...
Voor een demo:
New Web Project
Ik heb ook al geprobeerd de code wat om te vormen naar bv simpelweg
en dan in HTML
Het geeft dus allebei hetzelfde resultaat..
*btw let niet op de helperMsg, het script is afgeleid uit een tutorial en dat was met popups, wat in mijn geval niet mag
Voor een demo:
New Web Project
Code:
/**
* @author Nicholas.Lievens KdG
*/
// Als de lengte van het string element 0 is toon hulpbericht
window.addEventListener("load", function(){
var form = document.getElementById('form');
form.addEventListener("submit", function(){
notEmpty(document.getElementById('req1'), 'Please enter a value');
isNumeric(document.getElementById('numbers'), 'Please enter numbers');
isAlphabet(document.getElementById('letters'), 'Please enter letters');
lengthRestriction(document.getElementById('maxlengte'), '2', '8');
madeSelection(document.getElementById('selection'), 'Please make a selection');
emailValidator(document.getElementById('emailer'), 'No valid email');
}, false);
}, false);
function notEmpty(elem, helperMsg) {
if(elem.value.length == 0){
elem.style.backgroundColor = 'red';
elem.focus(); // zet focus op deze input
return false;
}
return true
}
// Als het string element overeen komt met de reguliere expressie zijn het nummers
function isNumeric(elem, helperMsg){
var numericExpression = /^[0-9]+$/;
if(elem.value.match(numericExpression)){
return true;
}
else {
elem.style.backgroundColor = 'red';
elem.focus();
return false;
}
}
// Als het string element overeenkomt met de reguliere expressie zijn het letters
function isAlphabet(elem, helperMsg){
var alphaExp = /^[a-zA-Z]+$/;
if(elem.value.match(alphaExp)){
return true;
}
else {
elem.style.backgroundColor = 'red';
elem.focus();
return false;
}
}
function lengthRestriction(elem, min, max){
var uInput = elem.value.length;
if(uInput >= min && uInput <= max){
return true;
}else{
elem.style.backgroundColor = 'red';
elem.focus();
return false;
}
}
function madeSelection(elem, helperMsg){
if(elem.value == "Please Choose"){
elem.style.backgroundColor = 'red';
elem.focus();
return false;
}
else {
return true;
}
}
function emailValidator(elem, helperMsg){
var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
if (elem.value.match(emailExp)) {
return true;
}
else{
elem.style.backgroundColor = 'red';
elem.focus();
return false;
}
}
Ik heb ook al geprobeerd de code wat om te vormen naar bv simpelweg
Code:
function controle() {
notEmpty();
}
function notEmpty() {
var leeg = document.getElementById('req1');
if(leeg.value.length == 0){
leeg.style.backgroundColor = 'red';
return false;
}
return true;
}
en dan in HTML
Code:
<form action="" id ="form" onsubmit="return controle()" method="post">
Het geeft dus allebei hetzelfde resultaat..
*btw let niet op de helperMsg, het script is afgeleid uit een tutorial en dat was met popups, wat in mijn geval niet mag

