// Regex patterns var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; var phonePattern = /^\(\d{3}\)\s\d{3}-\d{4}/; var postalCodePattern = /^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$/; var civicNumberPattern = /^\d{1,5}([A-Z])?$/; /** * Used to add an Email match validator * @param {String} primaryemail * @param {String} confirmemail * @param {Object} errorMessage */ function addEmailMatchValidator(primaryemail, confirmemail, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.EmailMatchMessage.fr : ErrorMessages.EmailMatchMessage.en; if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = confirmemail+"MatchValidator"; newValidator.controltovalidate = confirmemail; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { // check if primary email matches confirm email if ($('#'+primaryemail).val() == $('#'+confirmemail).val()) { return true; } else { return false; } }; Page_Validators.push(newValidator); } /** * Used to add an Email format validator * @param {String} fieldname */ function addEmailFormatValidator(fieldname, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.EmailFormatMessage.fr : ErrorMessages.EmailFormatMessage.en; if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname+"FormatValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { // check if email is valid var emailValue = $('#' + fieldname).val(); if(!emailValue || (emailValue && emailValue.length > 0 && emailPattern.test(emailValue))) { return true; } else { return false; } }; Page_Validators.push(newValidator); } /** * Used to add an Numeric format validator * @param {String} fieldname * @param {Object} errorMessage */ function addNumericFormatValidator(fieldname, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.NumericFormatMessage.fr : ErrorMessages.NumericFormatMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname+"NumericValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { // check if field is numeric var fieldValue = $('#' + fieldname).val(); if(!fieldValue || (fieldValue && isNumeric(fieldValue) && parseInt(fieldValue) >= 0 && parseInt(fieldValue) <= 999999999)) { return true; } else { return false; } }; Page_Validators.push(newValidator); } /** * Used to add minimum length validation * @param {String} fieldname * @param {Number} length * @param {Object} errorMessage */ function addMinLengthValidator(fieldname, length, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.MinLengthMessage.fr : ErrorMessages.MinLengthMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); validationMessage = validationMessage.replace('', length); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname+"MinLengthValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { // check if email is valid var fieldValue = $('#' + fieldname).val(); if(fieldValue.length >= length) { return true; } else { return false; } }; Page_Validators.push(newValidator); } /** * Used to add maximum length validation * @param {String} fieldname * @param {Number} length * @param {Object} errorMessage */ function addMaxLengthValidator(fieldname, length, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.MaxLengthMessage.fr : ErrorMessages.MaxLengthMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); validationMessage = validationMessage.replace('', length); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname+"MaxLengthValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { // check lenght smaller than max length var fieldValue = $('#' + fieldname).val(); if(fieldValue.length <= length) { return true; } else { return false; } }; Page_Validators.push(newValidator); } /** * Used to add regex validation * @param {String} fieldname * @param {String} type * the type can be phone, email * @param {Number} regex * @param {Object} errorMessage */ function addRegexValidator(fieldname, type, customRegex, errorMessage) { var lang = $("#langCode").val(); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); } if (typeof (Page_Validators) == 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname+"RegexValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { // check if email is valid var fieldValue = $('#' + fieldname).val(); if(type == 'phone') { customRegex = phonePattern; } if(type == 'postal') { customRegex = postalCodePattern; } if(fieldValue.length == 0 || fieldValue.match(customRegex)) { return true; } else { return false; } }; Page_Validators.push(newValidator); } /** * Used to add an Required match validator * @param {String} fieldname * @param {Boolean} isDate * @param {Object} errorMessage */ function addRequiredValidator(fieldname, isDate = false, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredMessage.fr : ErrorMessages.RequiredMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = "RequiredFieldValidator" + fieldname; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { var value = $("#"+ fieldname).val(); if (value == null || value == "") { return false; } else { return true; } }; $('#' + fieldname).prop('required',true); $('#' + fieldname + '_label').closest('.table-info').addClass('required'); // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate that there is a selected element for a N to N multiselect input * @param {String} fieldname * @param {String} fieldToCheck * @param {Object} errorMessage */ function addRequiredNtoNValidator(fieldname, fieldToCheck, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredNtoNMessage.fr : ErrorMessages.RequiredNtoNMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname + "Validator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { return $('#'+ fieldToCheck).find(':selected').length > 0; }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate that there is a selected element for a N to N multiselect input * @param {String} fieldname * @param {String} fieldToCheck * @param {Object} errorMessage */ function addRequiredCheckboxGroupValidator(fieldname, fieldsContainer, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredNtoNMessage.fr : ErrorMessages.RequiredNtoNMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname + "CheckboxGroupValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { return $('#'+ fieldsContainer).find(':checked').length > 0; }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate that there is at least one element added in the subgrid * @param {String} fieldname * @param {Object} errorMessage */ function addMinimumSubgridElementValidator(fieldname, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.MinimumSubgridElementMessage.fr : ErrorMessages.MinimumSubgridElementMessage.en; if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname + "MinimumValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { var amount = $('#' + fieldname).find('.view-grid').find('tbody').children().length; if(amount > 0) { return true; } else { return false; } }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate the date is greater or lower then the given date * @param {String} testDate * @param {boolean} isToday * @param {String} compareDate date with format YYYY/MM/DD * @param {Object} errorMessage */ function addDateCompareValidator(testDate, isToday, compareDate, isBigger = true, errorMessage, comparefieldName) { var lang = $("#langCode").val(); var fieldLabel = testDate.replace('_datepicker_description', '') + "_label"; var validationMessage = ""; if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } else { if(isToday && isBigger) { validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateCurrentGreater.fr : ErrorMessages.DateCurrentGreater.en; } else if(isToday && !isBigger) { validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateCurrentLower.fr : ErrorMessages.DateCurrentLower.en; } else if(!isToday && isBigger) { validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateGreater.fr : ErrorMessages.DateGreater.en; } else if(!isToday && !isBigger) { validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateLower.fr : ErrorMessages.DateLower.en; } validationMessage = validationMessage.replace('', $('#' + fieldLabel).text()); validationMessage = validationMessage.replace('', comparefieldName); } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = testDate + "DateCompareValidator"; newValidator.controltovalidate = testDate; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { if(!$('#' + testDate).val()) { return true; } var m_Date = $('#' + testDate).val(); m_Date = m_Date.substring(0, m_Date.indexOf("T")); var m_CompareDate = isToday ? moment() : moment(compareDate, 'DD/MM/YYYY'); if((isBigger ? moment(m_Date).isAfter(m_CompareDate.format('YYYY-MM-DD')): moment(m_Date).isBefore(m_CompareDate.format('YYYY-MM-DD')))) { return true; } else { return false; } }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate the date is greater or lower then the given date * @param {String} testDate * @param {boolean} isToday * @param {String} compareDate date with format YYYY/MM/DD * @param {Object} errorMessage */ function addDateEqualCompareValidator(testDate, isToday, compareDate, isBigger = true, errorMessage, comparefieldName) { var lang = $("#langCode").val(); var fieldLabel = testDate.replace('_datepicker_description', '') + "_label"; var validationMessage = ""; if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } else { if(isToday && isBigger) { validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateCurrentGreaterEqual.fr : ErrorMessages.DateCurrentGreaterEqual.en; } else if(isToday && !isBigger) { validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateCurrentLowerEqual.fr : ErrorMessages.DateCurrentLowerEqual.en; } else if(!isToday && isBigger) { validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateGreaterEqual.fr : ErrorMessages.DateGreaterEqual.en; } else if(!isToday && !isBigger) { validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateLowerEqual.fr : ErrorMessages.DateLowerEqual.en; } validationMessage = validationMessage.replace('', $('#' + fieldLabel).text()); validationMessage = validationMessage.replace('', comparefieldName); } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = testDate + "DateEqualCompareValidator"; newValidator.controltovalidate = testDate; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { if(!$('#' + testDate).val()) { return true; } var m_Date = $('#' + testDate).val(); m_Date = m_Date.substring(0, m_Date.indexOf("T")); var m_CompareDate = isToday ? moment() : moment(compareDate, 'DD/MM/YYYY'); if((isBigger ? moment(m_Date).isSameOrAfter(m_CompareDate.format('YYYY-MM-DD')): moment(m_Date).isSameOrBefore(m_CompareDate.format('YYYY-MM-DD')))) { return true; } else { return false; } }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate the end date is after the start date * @param {String} beginDate * @param {String} endDate * @param {Object} errorMessage */ function addEndDateValidator(beginDate, endDate, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.EndDateMessage.fr : ErrorMessages.EndDateMessage.en; if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = endDate + "DateValidator"; newValidator.controltovalidate = endDate; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { var m_StartDate = $('#' + beginDate).val(); var m_EndDate = $('#' + endDate).val(); if(moment(m_EndDate, 'DD/MM/YYYY').isAfter(moment(m_StartDate, 'DD/MM/YYYY')) || moment(m_EndDate, 'DD/MM/YYYY').isSame(moment(m_StartDate, 'DD/MM/YYYY'))) { return true; } else { return false; } }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate the end time is after the start time * @param {String} beginTime * @param {String} endTime * @param {Object} errorMessage */ function addEndTimeValidator(beginTime, endTime, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.EndTimeMessage.fr : ErrorMessages.EndTimeMessage.en; if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = endTime + "TimeValidator"; newValidator.controltovalidate = endTime; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { var m_StartTime = $('#' + beginTime).val(); var m_EndTime = $('#' + endTime).val(); if(moment(m_EndTime, 'hh:mm').isAfter(moment(m_StartTime, 'hh:mm'))) { return true; } else { return false; } }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } // Validator that check if there is at least a certain amount of valid radio set to 'YES' /** * Used to validate the end time is after the start time * The groupId is the id of the element on which to append the error message, leave blank if none by default we get * the parent fieldset of the first field * @param {String} groupId / * @param {Array} fieldnames * @param {Number} minAmount * @param {Object} errorMessage */ function addMinimumRadioGroupValidator(groupId, fieldnames, minAmount, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.MinimumRadioGroupMessage.fr : ErrorMessages.MinimumRadioGroupMessage.en; validationMessage = validationMessage.replace('', minAmount); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } var referenceID = groupId && groupId.length > 0 ? 'group_' + groupId : fieldnames[0].replace('$', ''); if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldnames[0] + "MinimumGroupValidator"; newValidator.controltovalidate = fieldnames[0]; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { if(fieldnames.length > 0) { var counter = 0; for (i=0; i < fieldnames.length; i++) { var checkedValue = $("input:radio[name$='" + fieldnames[i].replace('$', '') + "']:checked").val(); if(checkedValue == 1) { counter++; } } if(counter >= minAmount) { return true; } else { return false; } } else { return true; } }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate the file size * @param {String} fieldname * @param {Number} filesize * @param {Object} errorMessage */ function addFileSizeValidator(fieldname, filesize, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.FileSizeMessage.fr : ErrorMessages.FileSizeMessage.en; validationMessage = validationMessage.replace('', filesize); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname + "FileSizeValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { if($('#' + fieldname + '_input_file').val()) { var size = $('#'+ fieldname + '_input_file')[0].files[0].size/1024/1024; //count file size in "mb" if(size >= filesize) { return false; } } return true; }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate the file type * @param {String} fieldname * @param {array} filetypes * @param {Object} errorMessage */ function addFileTypeValidator(fieldname, filetypes, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.FileFormatMessage.fr : ErrorMessages.FileFormatMessage.en; if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname + "FileTypeValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { if($('#' + fieldname + '_input_file').val()) { var resultid = $('#' + fieldname + '_input_file').val().split("."); var currentType = resultid [resultid.length-1]; // get file type var index = filetypes.findIndex(x => x == currentType.toLowerCase()); if(index < 0) { return false } } return true; }; // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to add an Required match validator * @param {String} fieldname * @param {Object} errorMessage */ function addRequiredFileValidator(fieldname, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredMessage.fr : ErrorMessages.RequiredMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; // Create new validator var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = "RequiredFieldFileValidator" + fieldname; newValidator.controltovalidate = fieldname + 'input'; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { var value = $("#"+ fieldname + "hidden_filename").val(); if (value && value.length > 0) { return true; } else { return false; } }; $('#' + fieldname + 'input_file').prop('required',true); $('#' + fieldname + '_label').closest('.table-info').addClass('required'); // Add the new validator to the page validators array: Page_Validators.push(newValidator); } /** * Used to validate boolean input * @param {String} fieldname * @param {String} expectedValue * @param {Object} errorMessage */ function addBooleanValidator(fieldname, expectedValue, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredMessage.fr : ErrorMessages.RequiredMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof (Page_Validators) == 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname+"BooleanValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { // check current value equal expected value var fieldValue = $(`input[name$="${fieldname}"]:checked`).val(); if(fieldValue == expectedValue) { return true; } else { return false; } }; Page_Validators.push(newValidator); } function addIPValidator(fieldname, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.IPMessage.fr : ErrorMessages.IPMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); if(errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname+"IPValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = ""+ validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { var ip = GetUserIP(); if(!ip) { return false; } $('#' + fieldname).val(ip); return true; } // Add the new validator to the page validators array: Page_Validators.push(newValidator); } // * Ajoute une validation pour numéro civique : jusqu’à 5 chiffres + optionnelle lettre majuscule /** * @param {String} fieldname * @param {Object} errorMessage */ function addCivicNumberValidator(fieldname, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang === 'fr-FR' ? ErrorMessages.CivicNumberMessage.fr : ErrorMessages.CivicNumberMessage.en; validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text()); if (errorMessage) { validationMessage = lang === 'fr-FR' ? errorMessage.fr : errorMessage.en; } if (typeof(Page_Validators) === 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = fieldname + "CivicNumberValidator"; newValidator.controltovalidate = fieldname; newValidator.errormessage = "" + validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { var value = $("#" + fieldname).val(); return civicNumberPattern.test(value); }; Page_Validators.push(newValidator); } /** * Remove email matching validation * @param {String} primaryemail */ function removeEmailMatchValidator(confirmemail) { var index = Page_Validators.findIndex(x => x.id == confirmemail + "MatchValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove email format validation * @param {String} primaryemail */ function removeEmailFormatValidator(primaryemail) { var index = Page_Validators.findIndex(x => x.id == primaryemail + "FormatValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove numeric format validation * @param {String} fieldname */ function removeNumericFormatValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "NumericValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove regex validation * @param {String} fieldname */ function removeRegexValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "RegexValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove required validation * @param {String} fieldname */ function removeValidators(fieldname) { var index = Page_Validators.findIndex(x => x.id == "RequiredFieldValidator" + fieldname); if (index > -1) { Page_Validators.splice(index, 1); } $('#' + fieldname).prop('required',false); $('#' + fieldname + '_label').closest('.table-info').removeClass('required'); } /** * Remove minimum subgrid element validation * @param {String} fieldname */ function removeMinimumSubgridElementValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "MinimumValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove minimum radio group element validation * @param {String} fieldname */ function removeMinimumRadioGroupValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "MinimumGroupValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove date compare validator * @param {String} fieldname */ function removeDateCompareValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "DateCompareValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove date equal compare validator * @param {String} fieldname */ function removeDateEqualCompareValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "DateEqualCompareValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove end date validator * @param {String} endDate */ function removeEndDateValidator(endDate) { var index = Page_Validators.findIndex(x => x.id == endDate + "DateValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove end time validator * @param {String} endTime */ function removeEndTimeValidator(endTime) { var index = Page_Validators.findIndex(x => x.id == endTime + "TimeValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove min length validator * @param {String} fieldname */ function removeMinLengthValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "MinLengthValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove max length validator * @param {String} fieldname */ function removeMaxLengthValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "MaxLengthValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove File Size validator * @param {String} fieldname */ function removeFileSizeValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "FileSizeValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove File Type validator * @param {String} fieldname */ function removeFileTypeValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "FileTypeValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove File Required validator * @param {String} fieldname */ function removeFileRequiredValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "RequiredFieldFileValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove Boolean validator * @param {String} fieldname */ function removeBooleanValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "BooleanValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Remove civic validator * @param {String} fieldname */ function removeCivicNumberValidator(fieldname) { var index = Page_Validators.findIndex(x => x.id == fieldname + "CivicNumberValidator"); if (index > -1) { Page_Validators.splice(index, 1); } } /** * Used to validate the end time is after the start time * @param {String} email */ function validateEmail(email) { var emailValue = $('#' + email).val(); // Clear all validations message and styling $('#' + email).removeClass('is-invalid'); $('#error_' + email).remove(); // Validate the email format if(!emailPattern.test(emailValue)) { $('#' + email).addClass("is-invalid"); $('#' + email).closest('.control').after(` Le format du courriel est incorrect. `); } } /** * Used to validate if a string is numeric * @param {String} str */ function isNumeric(str) { if (typeof str != "string") return false // we only process strings! return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)... !isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail } function addLogistiqueValidator(fieldnameToAnchor, errorMessage) { var lang = $("#langCode").val(); var validationMessage = lang.indexOf('fr') > -1 ? "Au moins 1 choix doit être sélectionné parmi les choix disponibles." : ""; if (errorMessage) { validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en; } if (typeof(Page_Validators) === 'undefined') return; var newValidator = document.createElement('span'); newValidator.style.display = "none"; newValidator.id = "logistiqueValidator"; newValidator.controltovalidate = fieldnameToAnchor; newValidator.errormessage = "" + validationMessage + ""; newValidator.validationGroup = ""; newValidator.initialvalue = ""; newValidator.evaluationfunction = function () { const logistiqueChecked = $("input[name$='$form_impactlogistique']:checked").val() === '1'; const emplacementVal = sessionStorage.getItem("form_typeemplacement"); if (!(logistiqueChecked && emplacementVal == 0)) return true; const vehicules = $('#form_nbvehicules').val().trim(); const navettes = $('#form_nbnavettes').val().trim(); const salleAppui = $("input[name$='$form_utilisationsalleappui']:checked").val() === '1'; return vehicules !== "" || navettes !== "" || salleAppui; }; Page_Validators.push(newValidator); } function removeLogistiqueValidator() { const index = Page_Validators.findIndex(x => x.id === "logistiqueValidator"); if (index > -1) { Page_Validators.splice(index, 1); } }