Si tout est déjà sur la page sous la forme de select
alors vous pouvez utiliser la valeur de l'option de comté pour afficher la bonne select
.
$("#counties").change(function(){
$(".cities").hide();
$("#" + this.value + "-cities").show();
});
Et exemple de ce travail: http://jsfiddle.net/jonathon/upaar/
Cependant, je recommande contre cela car ce n'est pas grande. Vous aurez chaque ville sur votre page, même si vous avez seulement besoin d'une petite quantité. La meilleure option serait de remplir votre liste de comtés, puis de remplir les villes à la volée avec votre propre JSON et la méthode $.get().
Par exemple (je n'utilise ici que GeoNames, vous le remplacerez par vos propres données);
$.get('http://ws.geonames.org/countryInfoJSON', function(data) {
$.each(data.geonames, function(i, item) {
$("#countries").append("<option value='" + item.geonameId + "'>" + item.countryName + "</option>");
});
});
$("#countries").change(function() {
$("#cities").empty();
$.get('http://ws.geonames.org/childrenJSON?geonameId=' + this.value, function(data) {
$.each(data.geonames, function(i, item) {
$("#cities").append("<option value='" + item.geonameId + "'>" + item.name + "</option>");
});
});
});
Exemple de fonctionner: http://jsfiddle.net/jonathon/QkXAK/
Les charges au-dessus des pays et définit l'événement de changement de la sélection countries
. Lorsque cette valeur change, elle est envoyée au serveur avec les données nécessaires. Dans ce cas, il envoie le geonameId
et trouve les éléments enfants de ce pays. Il efface ensuite la sélection cities
et ajoute les villes renvoyées dans la requête AJAX. L'avantage est que vous ne chargez que ce dont vous avez besoin, vous évitant d'avoir à envoyer toutes les données sur le chargement de la page. J'utilise GeoNames dans l'exemple, mais si vous avez votre propre jeu de données, les principes de base sont les mêmes.
Est-ce que toutes les villes de tous les comtés sont déjà chargées dans la page? Ou sont-ils chargés dynamiquement en utilisant un appel Ajax? –
ils sont chargés via php afin qu'ils soient là. Peut-être que vous pouvez définir une classe spécifique pour toutes les villes liées à son comté. et jouez avec display: none; Quelque chose – Paparappa