$(this).closest('#cn-updateProfileFormConfigWrapper').find('.js-cn-updateProfileFormConfig')
.formValidation(
{
autoFocus: false,
framework: 'bootstrap',
icon: {
valid: null,
invalid: null,
validating: null
},
fields: {
'values[updateProfileFormDefinition_title]': {
trigger: 'change',
validators: {
notEmpty: {
message: 'Please select a title',
message_en: 'Please select a title'
}
}
},
'values[updateProfileFormDefinition_firstName]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Please enter your first name.',
message_en: 'Please enter your first name.'
},
stringLength: {
message: 'You have exceeded the maximum length of 40 characters for this field',
message_en: 'You have exceeded the maximum length of 40 characters for this field',
max: 40
},
}
},
'values[updateProfileFormDefinition_lastName]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Please enter your last name.',
message_en: 'Please enter your last name.'
},
stringLength: {
message: 'You have exceeded the maximum length of 40 characters for this field',
message_en: 'You have exceeded the maximum length of 40 characters for this field',
max: 40
},
}
},
'values[updateProfileFormDefinition_birthdate_day]': {
err: "#updateProfileFormDefinition_birthdate-date-error-messages",
excluded: false,
trigger: 'blur',
validators: {
callback: {
message: 'Please enter a valid birthdate day',
message_en: 'Please enter a valid birthdate day',
callback: function(value, validator, $field) {
var input = $('#updateProfileFormDefinition_birthdate_day');
if (ACC.global.isDateFieldEmpty("updateProfileFormDefinition_birthdate")) {
if ($("small[data-fv-for='" + 'values[updateProfileFormDefinition_birthdate_month]' +"']").attr('data-fv-result') == "INVALID") {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_month');
}
if ($("small[data-fv-for='" + 'values[updateProfileFormDefinition_birthdate_year]' +"']").attr('data-fv-result') == "INVALID") {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_year]');
}
input.addClass('date-input-no-confirmation');
return true;
} else {
input.removeClass('date-input-no-confirmation');
}
if ($field.val().match("^\\d+$") == null) {
return false;
}
var value = parseInt($field.val());
var monthValue = $('#updateProfileFormDefinition_birthdate_month').val();
var yearValue = $('#updateProfileFormDefinition_birthdate_year').val();
if (monthValue == "" && yearValue == "") {
return value >= 1 && value <= 31;
}
if (monthValue == "2" && yearValue == "") {
return value >= 1 && value <= 29;
}
var month = parseInt(monthValue);
var year = parseInt(yearValue);
return value >= 1 && value <= ACC.global.numberOfDaysInMonth(month, year);
}
}
}
},
'values[updateProfileFormDefinition_birthdate_month]': {
err: "#updateProfileFormDefinition_birthdate-date-error-messages",
excluded: false,
trigger: 'blur',
validators: {
callback: {
message: 'Please enter a valid birthdate month',
message_en: 'Please enter a valid birthdate month',
callback: function(value, validator, $field) {
if (ACC.global.isDateFieldEmpty("updateProfileFormDefinition_birthdate")) {
if ($("small[data-fv-for='" + 'values[updateProfileFormDefinition_birthdate_day]' +"']").attr('data-fv-result') == "INVALID") {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_day]');
}
if ($("small[data-fv-for='" + 'values[updateProfileFormDefinition_birthdate_year]' +"']").attr('data-fv-result') == "INVALID") {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_year]');
}
$('#updateProfileFormDefinition_birthdate_month').addClass('date-input-no-confirmation');
return true;
} else {
$('#updateProfileFormDefinition_birthdate_month').removeClass('date-input-no-confirmation');
}
if ($field.val().match("^\\d+$") == null){
return false;
}
var value = parseInt($field.val());
if ($('#updateProfileFormDefinition_birthdate_day').val() != "") {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_day]');
}
return value >= 1 && value <= 12;
}
}
}
},
'values[updateProfileFormDefinition_birthdate_year]': {
err: "#updateProfileFormDefinition_birthdate-date-error-messages",
excluded: false,
trigger: 'blur',
validators: {
callback: {
message: 'Please enter a valid birthdate year',
message_en: 'Please enter a valid birthdate year',
callback: function(value, validator, $field) {
var value = $field.val();
if (ACC.global.isDateFieldEmpty("updateProfileFormDefinition_birthdate")) {
if ($("small[data-fv-for='" + 'values[updateProfileFormDefinition_birthdate_day]' +"']").attr('data-fv-result') == "INVALID") {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_day]');
}
if ($("small[data-fv-for='" + 'values[updateProfileFormDefinition_birthdate_month]' +"']").attr('data-fv-result') == "INVALID") {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_month]');
}
$('#updateProfileFormDefinition_birthdate_year').addClass('date-input-no-confirmation');
return true;
} else {
$('#updateProfileFormDefinition_birthdate_year').removeClass('date-input-no-confirmation');
}
if (!ACC.global.isValidYear("updateProfileFormDefinition_birthdate")) {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_day]');
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_month]');
$('#updateProfileFormDefinition_birthdate_year').removeClass('date-input-no-confirmation');
return false;
}
if (value.match("^\\d{4}$") != null) {
if ($('#updateProfileFormDefinition_birthdate_day').val() != "") {
$('.js-cn-updateProfileFormConfig').formValidation('revalidateField', 'values[updateProfileFormDefinition_birthdate_day]');
}
return true;
}
return false;
}
}
}
},
'values[updateProfileFormDefinition_phone]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Please enter your telephone number',
message_en: 'Please enter your telephone number'
},
stringLength: {
message: 'You have exceeded the maximum length of 20 characters for this field',
message_en: 'You have exceeded the maximum length of 20 characters for this field',
max: 20
},
callbackPhone: {
alias: 'callback',
message: 'Please enter your telephone number',
message_en: 'Please enter your telephone number',
callback: function (value, validator, $field) {
var matchesRegex = true;
var regexList = [];
for (var i = 0; i < regexList.length; i++) {
matchesRegex = matchesRegex && (value.match(regexList[i])[0] === value);
}
var prefixCountry = $field.siblings('.flag-container').children('.selected-flag').attr('title');
var isValidPrefix = prefixCountry !== undefined && prefixCountry !== 'Unknown';
return value === '' || (matchesRegex && isValidPrefix);
}
},
}
},
}
}
)
.on('success.field.fv', function() {
/* note: we need to check if there is an error in the form, as the plugin does a validation on field level.
Validating the whole form on blur of a field is no option, as the customer does not want to see error messages on all fields
when entering one field. In case of an error on at least one field we disable the submit button manually */
var $form = $(this).closest('form');
if ($form.find('.form-group.has-error').length > 0) {
var $button = $form.find('.js-button');
if (!$button.hasClass('disabled')) {
$button.addClass('disabled');
}
}
})
.on('err.field.fv', function(e, data) {
if(data.element.closest('.form-combo-molecule').length){
/* Get the messages of field */
var messages = data.fv.getMessages(data.element);
/* Get the error message content of the field */
var errorContent = data.element.closest('.form-combo-molecule').find('.errors');
/* Get the hidden error message of the field */
var errorField = errorContent.find('small[data-field="' + data.field + '"][style="display: none;"]');
/* Loop over the messages */
for (var i in messages) {
if (errorField[1] == undefined) {
var newErrorContainer = document.createElement("small");
$(newErrorContainer).attr("class", "help-block");
$(newErrorContainer).attr("data-field", data.field);
$(newErrorContainer).attr("data-fv-validator", "callback");
$(newErrorContainer).attr("data-fv-for", $(data.element[0]).attr("name") );
$(newErrorContainer).attr("data-fv-result", "INVALID");
$(newErrorContainer).attr("data-tracked", "true");
$(newErrorContainer).html(messages[i]);
if (errorContent.text().includes(messages[i])) {
$(newErrorContainer).hide();
}
errorContent.append(newErrorContainer);
}
}
}
})
.on('success.field.fv', function(e, data) {
/* Remove the field messages */
$errorContent = data.element.closest('.form-combo-molecule').find('.errors');
$errorContent.find('small[data-field="' + data.field + '"]').remove();
$errorContent.find('small[data-fv-result="INVALID"]').removeAttr("style");
})
.on('success.form.fv', function() {
var formId = 'updateProfileForm';
if (!formId || formId === 'cfRequest' || formId === 'cfResponse') {
formId = 'updateProfileFormDefinition';
}
ACC.tracking.pushFormSubmit(formId);
});
var replaceDatePatternWithValue = function(mandatory, fieldConfigCode, fieldConfigPattern) {
var date = fieldConfigPattern.toUpperCase();
var year = $("#" + fieldConfigCode + "_year").val();
var month = $("#" + fieldConfigCode + "_month").val();
var day = $("#" + fieldConfigCode + "_day").val();
date = date.replace(/[Y]+/, year);
date = date.replace(/[M]+/, month);
date = date.replace(/[D]+/, day);
var hiddenDateField = $('.js-' + fieldConfigCode + '_hidden');
if (mandatory) {
hiddenDateField.val(date);
} else {
hiddenDateField.val(date == "" ? "" : date);
}
};
var triggerFormValidation = function(fieldId, mandatory, fieldCode, dateFormat) {
replaceDatePatternWithValue(mandatory, fieldCode, dateFormat);
$('.js-fieldCode').formValidation('revalidateField', 'values[fieldCode_'+ fieldId + ']');
};
var removeDateMoleculeError = function(molecule) {
if(molecule.hasClass('has-error')){
molecule.removeClass('has-error');
molecule.find('.help-block').find('span').remove();
}
};
$('.js-updateProfileFormDefinition_birthdate_day').blur(function() {
removeDateMoleculeError($('.js-updateProfileFormDefinition_birthdate').closest('.form-combo-molecule'));
triggerFormValidation("day", false, "updateProfileFormDefinition_birthdate", "yyyy.MM.dd");
});
$('.js-updateProfileFormDefinition_birthdate_month').blur(function() {
removeDateMoleculeError($('.js-updateProfileFormDefinition_birthdate').closest('.form-combo-molecule'));
triggerFormValidation("month", false, "updateProfileFormDefinition_birthdate", "yyyy.MM.dd");
});
$('.js-updateProfileFormDefinition_birthdate_year').blur(function() {
removeDateMoleculeError($('.js-updateProfileFormDefinition_birthdate').closest('.form-combo-molecule'));
triggerFormValidation("year", false, "updateProfileFormDefinition_birthdate", "yyyy.MM.dd");
});
Almost Done!
Please confirm the information below before signing in.
{* #socialRegistrationForm *} {* mobile *} {* mobilePrefix *} {* mobileSuffix *} {* emailAddress *} {* optInRegistration *}