From b1e3ee089f02763c1d2af2b560a0bbd94b5b457f Mon Sep 17 00:00:00 2001 From: KONE SOREL Date: Sat, 7 Mar 2026 12:31:11 +0000 Subject: [PATCH] dfg --- Js/fonctions.js | 61 ++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/Js/fonctions.js b/Js/fonctions.js index dd8d462f..0590c706 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -47684,30 +47684,18 @@ function formAjoutTableRef() { // Filtrer la liste des villes par pays function filtreVilleParPays() { - const codePays = $('#codePays').val(); const $selectVille = $('#codeVille'); - if (!codePays) return; - $.ajax({ url: $("#racineWeb").val() + "Ajaxfiltrevilleparpays/", type: 'post', - data: { codePays: codePays }, + data: { codePays: $('#codePays').val() }, success: function(htmlOptions) { - // 1. ÉTAPE CRUCIALE : On détruit l'attribut title qui cause le doublon dans le bouton - $selectVille.removeAttr('title').prop('title', ''); - - // 2. On vide physiquement les options - $selectVille.empty(); - - // 3. On injecte les nouvelles options (venant du PHP) - $selectVille.append(htmlOptions); + // On vide et on remplace les options (on ne touche pas au select lui-même) + $selectVille.empty().append(htmlOptions); - // 4. On force le SelectPicker à se réinitialiser SANS cumuler les textes - $selectVille.selectpicker('refresh'); - - // 5. On force la valeur à vide pour que le placeholder s'affiche proprement une seule fois - $selectVille.selectpicker('val', ''); + // On appelle notre fonction de sécurité + actualiserSelectPicker('#codeVille'); } }); } @@ -91655,23 +91643,28 @@ function initDataTableReference(selector, exportTitle = 'Export_Donnees') { function actualiserSelectPicker(selector) { $(selector).each(function() { const $el = $(this); - - // 1. On détruit proprement l'instance existante - if ($el.data('selectpicker')) { - $el.selectpicker('destroy'); + + // 1. ÉTAPE RADICALE : On supprime l'attribut title qui cause le doublon visuel + $el.removeAttr('title').prop('title', ''); + + // 2. On vérifie si l'instance existe déjà + if (!$el.data('selectpicker')) { + // Initialisation propre + $el.selectpicker({ + liveSearch: true, + style: 'btn-white border-2 border-start-0 fw-bold', + width: '100%', + size: 8, + noneSelectedText: $("#codeLangue").val() === 'en_US' ? '-- Select --' : '-- Sélectionner --' + }); + } else { + // Simple mise à jour des données (sans recréer le bouton) + $el.selectpicker('refresh'); + } + + // 3. On force la valeur à vide si rien n'est sélectionné pour nettoyer l'affichage + if(!$el.val()) { + $el.selectpicker('val', ''); } - - // 2. ÉTAPE RADICALE : On supprime les div résidus du plugin - // C'est ce qui empêche le texte de doubler - $el.siblings('.bootstrap-select').remove(); - - // 3. On ré-initialise avec tes paramètres - $el.selectpicker({ - liveSearch: true, - style: 'btn-white border-2 border-start-0 fw-bold', - width: '100%', - size: 8, - noneSelectedText: $("#codeLangue").val() === 'en_US' ? '-- Select --' : '-- Sélectionner --' - }); }); } \ No newline at end of file