This commit is contained in:
KONE SOREL 2026-04-11 13:13:54 +00:00
parent 33a7436eda
commit 6d26cee8e4

View File

@ -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");