jQuery(document).ready(function($) { // --- CONFIGURATION --- var formID = 1; // REMPLACE PAR L'ID DE TON FORMULAIRE SI DIFFÉRENT DE 1 var reductionFiscale = 0.66; // 66% de déduction (mettre 0.75 pour 75%) // Sélecteurs basés sur tes IDs var radioMontant = 'input[name="input_' + formID + '.15"]'; // Note le point pour les radios GF parfois // Si le sélecteur ci-dessus ne marche pas, essaie : 'input[name="input_' + getFormID(formID) + '_15"]' // Pour Gravity Forms standard, c'est souvent name="input_15" tout court, donc : var inputRadioName = 'input[name="input_' + 15 + '"]'; var inputLibreID = '#input_' + formID + '_16'; var blocResultat = '#bloc-fiscal'; var spanMontant = '#montant-choisi'; var spanCout = '#cout-reel'; // Fonction de calcul et d'affichage function mettreAJourFiscalite() { var montant = 0; var estMontantLibre = false; // 1. Vérifier si un bouton radio est coché var radioSelectionne = $(inputRadioName + ':checked').val(); // 2. Logique de récupération du montant // On considère que c'est un montant libre si la valeur du radio contient "Autre" // ou si le champ libre a une valeur et que le radio n'est pas un chiffre simple. var valLibre = $(inputLibreID).val(); // Nettoyage de la valeur libre (remplace virgule par point) if(valLibre) { valLibre = parseFloat(valLibre.replace(',', '.')); } // Si une valeur est saisie dans le champ libre (ID16), elle est prioritaire if (valLibre > 0) { montant = valLibre; } else if (radioSelectionne) { // On essaie de convertir la valeur du radio en nombre // Souvent les valeurs sont "10|10" ou juste "10". // Si la valeur est "Autre", parseFloat donnera NaN. var valRadioClean = parseFloat(radioSelectionne); if (!isNaN(valRadioClean)) { montant = valRadioClean; } } // 3. Calcul et Affichage if (montant > 0) { var coutReel = montant * (1 - reductionFiscale); // Arrondir à 2 décimales var coutReelAffiche = coutReel.toFixed(2).replace('.', ','); var montantAffiche = montant.toFixed(2).replace('.', ','); $(spanMontant).text(montantAffiche); $(spanCout).text(coutReelAffiche); $(blocResultat).slideDown(); // Affiche la boîte verte } else { $(blocResultat).slideUp(); // Cache la boîte si pas de montant } } // --- ÉVÉNEMENTS DÉCLENCHEURS --- // 1. Au changement des boutons radio (ID15) $(document).on('change', inputRadioName, function() { // Si on change de radio, on vide le champ libre pour éviter les conflits visuels // Sauf si c'est le choix "Autre" (à adapter selon ta valeur "Autre") if ($(this).val() !== 'Autre') { $(inputLibreID).val(''); } mettreAJourFiscalite(); }); // 2. À la frappe dans le champ libre (ID16) $(document).on('keyup change', inputLibreID, function() { mettreAJourFiscalite(); }); // Initialisation au chargement (au cas où le form est pré-rempli) setTimeout(mettreAJourFiscalite, 500); });