From 6d26cee8e410d85f71cadb6556b67e14e93f1688 Mon Sep 17 00:00:00 2001 From: KONE SOREL Date: Sat, 11 Apr 2026 13:13:54 +0000 Subject: [PATCH] sert --- Js/fonctions.js | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/Js/fonctions.js b/Js/fonctions.js index 20697fea..3f80603a 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -47853,33 +47853,27 @@ function formAjoutTableRef() { // 3. Application des styles "Champs Requis" (Bordure rouge au focus) // On l'appelle AVANT le focus pour que le premier champ soit déjà "armé" - stylechampsRequis(); + if (typeof stylechampsRequis === "function") stylechampsRequis(); // 4. Focus intelligent sur le PREMIER champ du formulaire setTimeout(function() { - // 1. Définition du sélecteur d'exclusion - // On cible : input (sauf hidden), select, textarea - // On exclut : :disabled, [readonly], :hidden + // Sélecteur qui exclut strictement : hidden, disabled, readonly var selector = 'input:not([type="hidden"]):not(:disabled):not([readonly]):visible, ' + 'select:not(:disabled):not([readonly]):visible, ' + 'textarea:not(:disabled):not([readonly]):visible'; - // 2. Recherche du premier élément valide dans le conteneur var $firstField = $('#div_maj_table').find(selector).first(); - // 3. Application du focus avec vérification if ($firstField.length > 0) { if ($firstField.hasClass('selectpicker')) { - // Pour Selectpicker, on utilise sa méthode interne - $firstField.selectpicker('focus'); + // SOLUTION CIBLÉE : On force le focus sur le bouton généré par le plugin + $firstField.closest('.bootstrap-select').find('.dropdown-toggle').focus(); } else { - // Pour les autres (input, textarea, select standard) + // Focus standard pour input et textarea $firstField.focus(); } - } else { - console.log("Aucun champ saisissable trouvé dans le formulaire."); } - }, 300); // Augmentation légère du délai pour garantir le rendu du Selectpicker + }, 300); // 300ms pour être sûr que le Selectpicker est totalement dessiné } }); } @@ -47978,19 +47972,29 @@ function formModifTableRef($idData) { format: formatD }); - if (typeof stylechampsRequis === "function") stylechampsRequis(); + // 3. Application des styles "Champs Requis" (Bordure rouge au focus) + // On l'appelle AVANT le focus pour que le premier champ soit déjà "armé" + if (typeof stylechampsRequis === "function") stylechampsRequis(); - // 3. Focus intelligent sur le PREMIER champ du formulaire + // 4. Focus intelligent sur le PREMIER champ du formulaire setTimeout(function() { - var $firstField = $('#div_maj_table').find('input:not([type="hidden"]), select').first(); + // Sélecteur qui exclut strictement : hidden, disabled, readonly + var selector = 'input:not([type="hidden"]):not(:disabled):not([readonly]):visible, ' + + 'select:not(:disabled):not([readonly]):visible, ' + + 'textarea:not(:disabled):not([readonly]):visible'; + + var $firstField = $('#div_maj_table').find(selector).first(); - // Si le premier champ est un selectpicker, on utilise sa méthode focus dédiée - if ($firstField.hasClass('selectpicker')) { - $firstField.selectpicker('focus'); - } else { - $firstField.focus(); + if ($firstField.length > 0) { + if ($firstField.hasClass('selectpicker')) { + // SOLUTION CIBLÉE : On force le focus sur le bouton généré par le plugin + $firstField.closest('.bootstrap-select').find('.dropdown-toggle').focus(); + } else { + // Focus standard pour input et textarea + $firstField.focus(); + } } - }, 200); + }, 300); // 300ms pour être sûr que le Selectpicker est totalement dessiné }, error: function(xhr) { toastr.error("Erreur de chargement du formulaire");