This commit is contained in:
KONE SOREL 2026-03-07 09:16:20 +00:00
parent 2ee539170a
commit f4cf1be505
3 changed files with 48 additions and 22 deletions

View File

@ -47681,28 +47681,52 @@ function formAjoutTableRef() {
}
// Filtrer la liste des villes par pays
function filtreVilleParPays(){
var codePays = $('#codePays').val();
function filtreVilleParPays() {
const codePays = $('#codePays').val();
const racineWeb = $("#racineWeb").val();
const $divVille = $('#div_ville');
donnees ='codePays='+codePays;
$.ajax({
url: "Ajaxfiltrevilleparpays/",
type: 'post',
data: donnees,
error: function(errorData){
//alert("Erreur : "+errorData);
// 1. Si aucun pays n'est sélectionné, on peut vider ou griser la ville
if (!codePays || codePays === "") {
$divVille.find('select').html('<option value=""><?= _("Choisir d\'abord un pays") ?></option>').selectpicker('refresh');
return;
}
},
success: function(data) {
//alert("Success : "+data);
$('#div_ville').empty();
$('#div_ville').html(data);
//filtreLocaliteParVille();
},
complete: function(){
}
});
// 2. Feedback visuel de chargement sur le conteneur
$divVille.css('opacity', '0.5');
// 3. Appel AJAX
$.ajax({
url: racineWeb + "Ajaxfiltrevilleparpays/",
type: 'post',
data: { codePays: codePays }, // Passage en objet JSON (plus propre)
success: function(data) {
// 4. On vide et on injecte le nouveau <select> ou les nouvelles <option>
$divVille.html(data);
// 5. CRUCIAL : Ré-initialisation du SelectPicker
// Comme le contenu est dynamique, il faut dire au plugin de se reconstruire
setTimeout(function() {
const $selectVille = $divVille.find('select');
$selectVille.selectpicker({
liveSearch: true,
style: 'btn-white border-2 border-start-0 fw-bold',
size: 8
});
$selectVille.selectpicker('refresh');
}, 50);
if (typeof toastr !== 'undefined') {
toastr.info("Villes synchronisées");
}
},
error: function(xhr) {
console.error("Erreur filtrage ville :", xhr.statusText);
},
complete: function() {
$divVille.css('opacity', '1');
}
});
}
// Filtrer la liste des localités par pays et par ville

View File

@ -1,3 +1,6 @@
<select name="codeVille" id="codeVille" class="form-select" required AUTOCOMPLETE="OFF" onchange="JAVASCRIPT:filtreLocaliteParVille();">
<select name="codeVille" id="codeVille"
class="form-select border-2 border-start-0 ps-0 selectpicker show-tick"
data-live-search="true"
required onchange="JAVASCRIPT:filtreLocaliteParVille();">
<?= liste_options($ville,'',false) ?>
</select>

View File

@ -40,7 +40,6 @@
class="form-select border-2 border-start-0 ps-0 selectpicker show-tick"
data-live-search="true"
required>
<option value=""><?= _("Choisir une ville") ?></option>
<?= liste_options($ville,'',false) ?>
</select>
</div>