Script d'exemple d'utilisation de l'API adresse.data.gouv.fr avec bootstrap et jQuery.
Le résultat propose un champ de recherche avec autocomplétion utilisable par le clavier ou à la souris.
// FACULTATIF : Pour l'infobulle bootstrap du champ #adresse
$(function() {
$('[data-toggle="tooltip"]').tooltip()
})
/*
* Script de gestion de recherche avec l'API adresses.data.gouv.fr
*
*/
var currentFocus = -1;
var fetchTrigger = 0;
// Fonction pour mettre en forme visuellement un résultat sélectionné
function setActive() {
var nbVal = $("div.address-feedback a").length;
if (!nbVal)
return false; // Si on n'a aucun résultat listé, on s'arrête là.
// On commence par nettoyer une éventuelle sélection précédente
$('div.address-feedback a').removeClass("active");
// Bidouille mathématique pour contraindre le focus dans la plage du nombre de résultats
currentFocus = ((currentFocus + nbVal - 1) % nbVal) + 1;
$('div.address-feedback a:nth-child(' + currentFocus + ')').addClass("active");
}
// Au clic sur une adresse suggérée, on ventile l'adresse dans les champs appropriés. On espionne mousedown plutôt que click pour l'attraper avant la perte de focus du champ adresse.
$('div.address-feedback').on("mousedown", "a", function(event) {
// Stop la propagation par défaut
event.preventDefault();
event.stopPropagation();
$("#adresse").val($(this).attr("data-name"));
$("#cp").val($(this).attr("data-postcode"));
$("#ville").val($(this).attr("data-city"));
$('.address-feedback').empty();
});
// On espionne le clavier dans le champ adresse pour déclencher les actions qui vont bien
$("#adresse").keyup(function(event) {
// Stop la propagation par défaut
event.preventDefault();
event.stopPropagation();
if (event.keyCode === 38) { // Flèche HAUT
currentFocus--;
setActive();
return false;
} else if (event.keyCode === 40) { // Flèche BAS
currentFocus++;
setActive();
return false;
} else if (event.keyCode === 13) { // Touche ENTREE
if (currentFocus > 0) {
// On simule un clic sur l'élément actif
$("div.address-feedback a:nth-child(" + currentFocus + ")").mousedown();
}
return...
Please Whitelist JSFiddle in your content blocker.
Help keep JSFiddle free for always by one of two ways:
Whitelist JSFiddle in your content blocker (two clicks)
Go PRO and get access to additional PRO features →
Join the 4+ million users, and keep the JSFiddle dream alive.
Ad-free
All ads in the editor and listing pages are turned completely off.
Fiddle Pages
Your fiddles accessible under a custom domain and a vanity path - the simplest hosting for your personal project.
Use pre-released features
You get to try and use features (like the Palette Color Generator) months before everyone else.
Fiddle collections
Sort and categorize your Fiddles into multiple collections.
Private collections and fiddles
You can make as many Private Fiddles, and Private Collections as you wish!
Get Fiddle Pages with PRO
Your fiddles accessible under a custom domain and a vanity path - the simplest hosting for your personal project.