valider
This commit is contained in:
parent
c9c3d7f05c
commit
eab0ec6cfd
115
Js/fonctions.js
115
Js/fonctions.js
|
|
@ -47666,15 +47666,11 @@ function formAjoutTableRef() {
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: donnees,
|
data: donnees,
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
// Injection du HTML
|
|
||||||
$('#div_maj_table').html(data);
|
$('#div_maj_table').html(data);
|
||||||
|
|
||||||
// Initialise tous les selects du formulaire avec recherche et sans doublons
|
|
||||||
initSelectPickerPro('#div_maj_table');
|
|
||||||
|
|
||||||
// Autres initialisations
|
// Init composants
|
||||||
$(".datepicker").datepicker({ autoclose: true, format: 'dd/mm/yyyy' });
|
$(".datepicker").datepicker({ autoclose: true, format: 'dd/mm/yyyy' });
|
||||||
if (typeof stylechampsRequis === "function") stylechampsRequis();
|
$(".selectpicker").selectpicker('refresh');
|
||||||
|
|
||||||
// Focus
|
// Focus
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|
@ -47696,12 +47692,31 @@ function filtreVilleParPays() {
|
||||||
url: racineWeb + "Ajaxfiltrevilleparpays/",
|
url: racineWeb + "Ajaxfiltrevilleparpays/",
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: { codePays: codePays },
|
data: { codePays: codePays },
|
||||||
|
beforeSend: function() {
|
||||||
|
// Étape 1 : Détruire le plugin sur l'ancien select pour éviter les doublons visuels
|
||||||
|
$divVille.find('.selectpicker').selectpicker('destroy');
|
||||||
|
$divVille.css('opacity', '0.5');
|
||||||
|
},
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
// Injection du HTML brut venant du serveur
|
// Étape 2 : Remplacer le contenu HTML (le nouveau <select> arrive du PHP)
|
||||||
$divVille.html(data);
|
$divVille.html(data);
|
||||||
|
|
||||||
// Appel de la fonction pro : recherche activée, doublons supprimés
|
// Étape 3 : Identifier le nouveau select et le reconstruire proprement
|
||||||
initSelectPickerPro('#div_ville');
|
const $newSelect = $divVille.find('select');
|
||||||
|
|
||||||
|
// On s'assure qu'il a les bonnes classes
|
||||||
|
$newSelect.addClass('form-control selectpicker').selectpicker({
|
||||||
|
liveSearch: true,
|
||||||
|
style: 'btn-white border-2 border-start-0 fw-bold',
|
||||||
|
width: '100%',
|
||||||
|
size: 8
|
||||||
|
});
|
||||||
|
|
||||||
|
// Étape 4 : Rafraîchissement forcé
|
||||||
|
$newSelect.selectpicker('refresh');
|
||||||
|
},
|
||||||
|
complete: function() {
|
||||||
|
$divVille.css('opacity', '1');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -91642,85 +91657,3 @@ function initDataTableReference(selector, exportTitle = 'Export_Donnees') {
|
||||||
table.buttons().container().appendTo('#table-buttons');
|
table.buttons().container().appendTo('#table-buttons');
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
function rafraichirSelectPicker(selecteurDiv) {
|
|
||||||
const $container = $(selecteurDiv);
|
|
||||||
|
|
||||||
// 1. Détruire toute instance existante dans ce conteneur
|
|
||||||
$container.find('.selectpicker').selectpicker('destroy');
|
|
||||||
|
|
||||||
// 2. Supprimer manuellement les éléments résiduels (les div .bootstrap-select)
|
|
||||||
$container.find('.bootstrap-select').remove();
|
|
||||||
|
|
||||||
// 3. Initialiser le nouveau select injecté
|
|
||||||
const $newSelect = $container.find('select');
|
|
||||||
|
|
||||||
if ($newSelect.length > 0) {
|
|
||||||
$newSelect.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 --'
|
|
||||||
});
|
|
||||||
|
|
||||||
// 4. Forcer le rendu
|
|
||||||
$newSelect.selectpicker('refresh');
|
|
||||||
$newSelect.selectpicker('render');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Nettoie et initialise proprement les SelectPickers dans un conteneur
|
|
||||||
* @param {string} containerSelector - Le sélecteur du parent (ex: '#div_maj_table')
|
|
||||||
*/
|
|
||||||
function forceInitSelectPicker(containerSelector) {
|
|
||||||
const $container = $(containerSelector);
|
|
||||||
|
|
||||||
// 1. Destruction radicale des instances existantes et de leur HTML généré
|
|
||||||
$container.find('.selectpicker').selectpicker('destroy');
|
|
||||||
$container.find('.bootstrap-select').remove();
|
|
||||||
|
|
||||||
// 2. Ré-initialisation propre sur les éléments <select> présents
|
|
||||||
$container.find('select.selectpicker').each(function() {
|
|
||||||
$(this).selectpicker({
|
|
||||||
liveSearch: true,
|
|
||||||
style: 'btn-white border-2 border-start-0 fw-bold',
|
|
||||||
width: '100%',
|
|
||||||
size: 8,
|
|
||||||
dropdownAlignRight: 'auto'
|
|
||||||
});
|
|
||||||
|
|
||||||
// 3. Forcer le rafraîchissement du rendu
|
|
||||||
$(this).selectpicker('refresh');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialise proprement un SelectPicker avec recherche sans doublons
|
|
||||||
* @param {string} selector - Le conteneur ou le select (ex: '#div_ville' ou '.selectpicker')
|
|
||||||
*/
|
|
||||||
function initSelectPickerPro(selector) {
|
|
||||||
const $element = $(selector);
|
|
||||||
const codeLangue = $("#codeLangue").val();
|
|
||||||
|
|
||||||
// 1. On détruit l'instance existante et on supprime le HTML généré par le plugin
|
|
||||||
// C'est cette étape qui empêche les doublons de barre de recherche
|
|
||||||
$element.find('.selectpicker').selectpicker('destroy');
|
|
||||||
$element.find('.bootstrap-select').remove();
|
|
||||||
|
|
||||||
// 2. On sélectionne les éléments <select> et on les ré-initialise
|
|
||||||
$element.find('select').each(function() {
|
|
||||||
$(this).selectpicker({
|
|
||||||
liveSearch: true, // RÉACTIVE LA RECHERCHE
|
|
||||||
style: 'btn-white border-2 border-start-0 fw-bold',
|
|
||||||
width: '100%',
|
|
||||||
size: 8,
|
|
||||||
noneSelectedText: codeLangue === 'en_US' ? '-- Select --' : '-- Sélectionner --',
|
|
||||||
liveSearchPlaceholder: codeLangue === 'en_US' ? 'Search...' : 'Rechercher...'
|
|
||||||
});
|
|
||||||
|
|
||||||
// 3. Forcer le rafraîchissement du rendu visuel
|
|
||||||
$(this).selectpicker('refresh');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,2 @@
|
||||||
|
|
||||||
<span class="input-group-text bg-light border-2 border-end-0"><i class="fas fa-city text-muted"></i></span>
|
<?= liste_options($ville,'',false) ?>
|
||||||
<select name="codeVille" id="codeVille" class="form-control selectpicker" data-live-search="true" required onchange="JAVASCRIPT:filtreLocaliteParVille();">
|
|
||||||
|
|
||||||
<?= liste_options($ville,'',false) ?>
|
|
||||||
</select>
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user