Override JavaScript functionality
In case of that some JavaScript section needs to be modified, you can override the related method simply like following example:
DoubleOptinDownload.showLoadingInfo = function (formUid) {
document.querySelectorAll(`#download-form-${formUid} input`).forEach(el => el.disabled = true);
document.querySelectorAll(`#download-form-${formUid} button`).forEach(el => el.disabled = true);
};
DoubleOptinDownload.hideLoadingInfo = function () {
document.querySelectorAll('.tx-double-optin-download input').forEach(el => el.disabled = false);
document.querySelectorAll('.tx-double-optin-download button').forEach(el => el.disabled = false);
};
DoubleOptinDownload.refreshFormFeedback = function (response) {
Object.keys(response.form).forEach(key => {
const field = document.getElementById(`download-${key}-${response.uid}`);
if (!field) return;
const wrapper = field.closest('.form-group');
const feedback = wrapper && wrapper.querySelector('.invalid-feedback');
field.classList.remove('is-invalid', 'is-valid');
if (response.form[key].isValid) {
if (feedback) feedback.innerHTML = '';
field.classList.add('is-valid');
} else {
if (feedback) feedback.innerHTML = response.form[key].error;
field.classList.add('is-invalid');
}
});
};
DoubleOptinDownload.clearForm = function (response) {
Object.keys(response.form).forEach(function(key) {
const field = document.getElementById(`download-${key}-${response.uid}`);
if (!field) {
return;
}
const type = field.type;
const node = field.nodeName;
if (type === 'text' || type === 'tel' || type === 'email') {
field.value = '';
field.classList.remove('is-valid');
}
else if (type === 'checkbox') {
field.checked = false;
field.classList.remove('is-valid');
}
else if (node === 'SELECT') {
field.selectedIndex = 0;
field.classList.remove('is-valid');
}
});
};