Files
wyczarujprezent.pl/modules/thecheckout/views/js/examples.txt
2024-10-28 22:14:22 +01:00

128 lines
5.1 KiB
Plaintext

// ##### Example 1 #####
// Make 'dni' field required only for Italy - add this Custom JS:
tc_confirmOrderValidations['dni_required_for_italy'] = function () {
var italyCountryId = 2;
var errorMsg = 'Required field';
$('#thecheckout-address-invoice input[name=dni]').removeClass('-error');
removeError('#thecheckout-address-invoice .error-msg');
if (
italyCountryId == $('#thecheckout-address-invoice select[name=id_country]').val() &&
$('#thecheckout-address-invoice input[name=dni]').is(':visible') &&
'' == jQuery.trim($('#thecheckout-address-invoice input[name=dni]').val())
) {
$('#thecheckout-address-invoice input[name=dni]').addClass('-error');
$('#thecheckout-address-invoice input[name=dni]').after('<div class="field error-msg">' + errorMsg + '</div>');
scrollToError();
return false;
} else {
return true;
}
};
// ##### Example 2 #####
// Make 'dni' field required only for Italy and only when 'I am a business customer' is *unticked*,
// including *-mark next to field - add this Custom JS:
tc_confirmOrderValidations['dni_required_for_italy_non_business'] = function () {
var italyCountryId = 2;
var errorMsg = 'Required field';
$('#thecheckout-address-invoice input[name=dni]').removeClass('-error');
removeError('#thecheckout-address-invoice .error-msg');
if (
italyCountryId == $('#thecheckout-address-invoice select[name=id_country]').val() &&
$('#thecheckout-address-invoice input[name=dni]').is(':visible') &&
'' == jQuery.trim($('#thecheckout-address-invoice input[name=dni]').val()) &&
!$('#i_am_business').is(':checked')
) {
$('#thecheckout-address-invoice input[name=dni]').addClass('-error');
$('#thecheckout-address-invoice input[name=dni]').after('<div class="field error-msg">' + errorMsg + '</div>');
scrollToError();
return false;
} else {
return true;
}
};
$('body').on('change', '[data-link-action=x-i-am-business]', function () {
let dniLabelEl = $('#thecheckout-address-invoice input[name=dni]').closest('label');
if ($(this).prop('checked')) {
dniLabelEl.removeClass('required');
} else {
dniLabelEl.addClass('required');
}
return false;
});
$(document).ready(function() {
// Initial setup - set field required (visually) when above conditions are met
$('[data-link-action=x-i-am-business]').trigger('change');
});
// ##### Example 3 #####
// Hide certain fields for virtual cart
// Add this to custom CSS (choose which fields and in which block; !important flag is due to postcode being managed from JS)
body.is-virtual-cart #thecheckout-address-invoice
:is(.form-group.firstname, .form-group.city, .form-group.postcode) {
display: none!important;
}
// ##### Example 4 #####
// Add 2nd email (verification) field
1/ Add Custom CSS in checkout module settings:
/* Custom CSS for emails verification */
.form-group.email-verification .field-label:before {
display: inline-block;
float: right;
font-weight: normal;
padding-left: 5px;
}
.lang-en .email-verification .field.error-msg {
display: block;
}
/* English and Danish versions, for other languages, add new rules .lang-xx prefix instead of .lang-en */
.lang-en .email-verification .field.error-msg.emails-do-not-match:before {
content: 'Emails do not match';
}
.lang-en .form-group.email-verification .field-label:before {
content: '(repeat)';
}
.lang-da .email-verification .field.error-msg.emails-do-not-match:before {
content: 'E-mail adresserne er ikke ens';
}
.lang-da .form-group.email-verification .field-label:before {
content: '(en gang til)';
}
2/ Add Custom JS in checkout module settings:
document.addEventListener('DOMContentLoaded', function(event) {
//jQuery shall be loaded now
var email_selector = '.account-fields .form-group.email:not(.email-verification)';
var email_verif_selector = '.account-fields .form-group.email-verification';
tc_confirmOrderValidations['email_verification'] = function() {
$(email_verif_selector +' .error-msg').remove();
if (
$(email_verif_selector + ' input[name=email]:visible').length &&
$(email_selector + ' input[name=email]').val() != $(email_verif_selector + ' input[name=email]').val()
) {
$(email_verif_selector + ' label').addClass('-error');
$(email_verif_selector + ' label input').after('<div class="field error-msg emails-do-not-match"></div>');
scrollToElement($(email_verif_selector));
return false;
} else {
return true;
}
}
$('.account-fields .form-group.email:visible').clone().addClass('email-verification').insertAfter('.account-fields .form-group.email');
if (prestashop.language.iso_code == 'en') {
$(email_verif_selector + ' .field-label').html('Confirm e-mail ');
} else if (prestashop.language.iso_code == 'da') {
$(email_verif_selector + ' .field-label').html('Bekræft e-mail ');
}
});