File: D:/HostingSpaces/SBogers60/agrimac.nl/wwwroot/js/form.js
/**
* Created by Pascal on 23/11/17.
*/
/**
*
* @param {string} id - html id of form
* @param {array} required - list of required field
* @constructor
*/
function Form(id, required) {
// Define form object
this.formObject = document.getElementById(id);
// Set required fields
this.requiredFields = required;
// Set default valid to true
this.valid = true;
// Validate form function
this.validate = function () {
// Reset valid to true
this.valid = true;
// Define this to self
var self = this;
var fieldToValidate = self.requiredFields.slice();
// Get all form elements
var formElements = this.formObject.querySelectorAll('input, textarea');
// Loop through the form elements
var formElementsLength = formElements.length;
for(var i = 0; i < formElementsLength; i++){
var el = formElements[i];
// Remove alert
el.classList.remove('alert');
var indexOfValidator = fieldToValidate.indexOf( el.getAttribute('name'));
// Check if it's in the required fields
if( indexOfValidator !== -1 ){
// Temporary store the value (for future checks or so ex. check if mail)
var value = el.value;
// Check if value is filled
if(value === null || value === ''){
// Else set alert and set form valid to false
el.classList.add('alert');
self.valid = false;
}
// Remove from fields to validate array
fieldToValidate.splice(indexOfValidator, 1);
}
}
// Check if all required fields are filled
if(fieldToValidate.length !== 0) {
// Else also set form valid to false
// And log because it should only happen in development
self.valid = false;
console.log('Not all required field are filled:');
console.log(fieldToValidate);
}
};
// Send form
this.send = function () {
this.formObject.submit();
}
}