- Posts: 511
- Thank you received: 37
Champs conditionnels dans profil joomla
1 year 1 week ago #369053
by Minie
Champs conditionnels dans profil joomla was created by Minie
-- HikaShop version -- : 6.1.0
-- Joomla version -- : 5.3.1
-- PHP version -- : 8.3.16
Bonjour,
un petit message pour signaler un petit souci. Les champs conditionnels fonctionnent nickel sur la page d'inscription, si un champ requis n'est pas affiché car il dépend d'un autre, aucun souci.
Par contre, dans le profil joomla, les champs supplémentaires hikashop générés ne répondent pas pareil, la validation JS Joomla bloque sur ces champs, non visibles dans le form car les conditions ne sont pas remplies pour leur affichage, mais présents dans le DOM et donc "is not focusable"
De mon coté ce n'est pas urgent, j'ai fait un petit patch js en attendant, mais je tenais à vous faire remonter l'info.
Merci
-- Joomla version -- : 5.3.1
-- PHP version -- : 8.3.16
Bonjour,
un petit message pour signaler un petit souci. Les champs conditionnels fonctionnent nickel sur la page d'inscription, si un champ requis n'est pas affiché car il dépend d'un autre, aucun souci.
Par contre, dans le profil joomla, les champs supplémentaires hikashop générés ne répondent pas pareil, la validation JS Joomla bloque sur ces champs, non visibles dans le form car les conditions ne sont pas remplies pour leur affichage, mais présents dans le DOM et donc "is not focusable"
De mon coté ce n'est pas urgent, j'ai fait un petit patch js en attendant, mais je tenais à vous faire remonter l'info.
Merci
Please Log in or Create an account to join the conversation.
1 year 1 week ago #369056
by nicolas
Replied by nicolas on topic Champs conditionnels dans profil joomla
Bonjour,
Intéressant en effet. Quel patch avez-vous fait ? Car pour l'instant je ne suis pas sûr de quelle serait la méthode à appliquer pour éviter le problème.
Intéressant en effet. Quel patch avez-vous fait ? Car pour l'instant je ne suis pas sûr de quelle serait la méthode à appliquer pour éviter le problème.
Please Log in or Create an account to join the conversation.
1 year 1 week ago #369112
by Minie
Replied by Minie on topic Champs conditionnels dans profil joomla
Bonjour,
mon "patch" est un peu à l'arrache et pas générique du tout mais il règle mon souci je préviens
mon "patch" est un peu à l'arrache et pas générique du tout mais il règle mon souci je préviens
Code:
<script>
// Corrige les champs conditionnels pour éviter le blocage de validation du formulaire JS
document.addEventListener('DOMContentLoaded', function() {
// 1) Cibler les 3 champs (id ou name — couvre les deux cas)
var legalInputs = Array.from(document.querySelectorAll(
'input[id^="user_legal_representative"],' +
'input[name^="data[user][user_legal_representative"]'
));
if (legalInputs.length === 0) {
return;
}
var form = legalInputs[0].form || document.querySelector('form.form-validate') || document.querySelector('form');
function isHidden(el) {
// offsetParent === null couvre display:none et les éléments non focusables
if (el.offsetParent === null) {
return true;
}
// Vérifie si HikaShop masque via visibility/height/opacity
var cs = window.getComputedStyle(el);
if (cs.visibility === 'hidden' || cs.display === 'none' || parseFloat(cs.opacity) === 0) {
return true;
}
// Vérifie si le conteneur parent est masqué
var p = el.closest('.hikashop_field, .control-group, .form-group, li, div');
if (p) {
var cps = window.getComputedStyle(p);
if (cps.display === 'none' || cps.visibility === 'hidden') {
return true;
}
}
return false;
}
function syncOne(el) {
var hidden = isHidden(el);
if (hidden) {
el.disabled = true; // Le validateur ignore un champ désactivé
el.required = false;
el.classList.remove('required', 'invalid', 'form-control-danger');
el.setAttribute('aria-invalid', 'false');
var label = form && form.querySelector('label[for="' + el.id + '"]');
if (label) {
label.classList.remove('invalid');
var fb = label.querySelector('.form-control-feedback');
if (fb) {
fb.remove();
}
}
} else {
el.disabled = false;
el.required = true; // Quand visible, le champ redevient requis
el.classList.add('required');
}
}
function syncAll() {
legalInputs.forEach(syncOne);
}
// 2) Synchroniser au chargement
syncAll();
// 3) Synchroniser avant chaque soumission (capture pour exécuter avant la validation Joomla)
if (form) {
form.addEventListener('submit', function() {
syncAll();
}, true);
}
// 4) HikaShop masque/affiche via toggleField → resynchroniser après chaque appel
if (window.hikashop && typeof window.hikashop.toggleField === 'function') {
var _origToggle = window.hikashop.toggleField;
window.hikashop.toggleField = function() {
var r = _origToggle.apply(this, arguments);
setTimeout(syncAll, 0);
return r;
};
}
// 5) Resynchroniser sur tout changement d’état
document.addEventListener('change', syncAll, true);
});
</script>
Please Log in or Create an account to join the conversation.
1 year 4 days ago #369129
by nicolas
Replied by nicolas on topic Champs conditionnels dans profil joomla
Bonjour,
Merci. Cela m'a bien aidé pour faire le patch de mon côté.
Ce sera inclus dans la prochaine version d'HikaShop.
Merci. Cela m'a bien aidé pour faire le patch de mon côté.
Ce sera inclus dans la prochaine version d'HikaShop.
Please Log in or Create an account to join the conversation.
Time to create page: 0.153 seconds