Ciao ragazzi ho creato due select concatenate provincia, comune.
In base al valore scelto della provincia vado a popolare il campo comune con i rispettivi valori.
I dati (provincia e comune) vado a prenderli in un file json.
Il codice funziona tranne il caso in cui seleziono l'ultima provincia, automaticamente ho il comune valorizzato con il primo valore. Come posso evitare questo?
oltre a jquery uso altre librerie.
Codice PHP:
$.getJSON('./json/tipologiche.json', function(json) {
for (var i=0; i<json.TIPOLOGICHE.T_PROVINCE.PROV.length; i++){
//controllare se devo svuotare il campo prov
control.childrenByPropertyId["provincia"].setValue();
$('#al9').append('<option value="' + json.TIPOLOGICHE.T_PROVINCE.PROV[i].desc + '">' + json.TIPOLOGICHE.T_PROVINCE.PROV[i].desc + '</option>');
}
});
//comune
$.getJSON('./json/tipologiche.json', function(json) {
control.childrenByPropertyId["provincia"].on("change", function(){
for (var i=0; i<json.TIPOLOGICHE.T_PROVINCE.PROV.length; i++){
//svuoto i campi comune e cap
control.childrenByPropertyId["comune"].setValue("");
control.childrenByPropertyId["cap"].setValue("");
//svuoto i comuni quando non ho nessun valore per la prov
if(control.childrenByPropertyId["provincia"].getValue()==""){
$('#al10').find('option').remove();
}
if(control.childrenByPropertyId["provincia"].getValue()!=null){
for (var x=0; x<json.TIPOLOGICHE.T_PROVINCE.PROV[i].COM.length; x++){
if(control.childrenByPropertyId["provincia"].getValue()==json.TIPOLOGICHE.T_PROVINCE.PROV[i].desc){
//controllo che il valore della prov scelto sia uguale nel json
//funzione per svuotare le option
//console.log(control.childrenByPropertyId["comune"].selectOptions)=null;
//$('#al10 selectedIndex').find('option');
if(control.childrenByPropertyId["comune"].getValue()===null ||
control.childrenByPropertyId["comune"].getValue=="-- Select --"){
//console.log(control.childrenByPropertyId["provincia"]);
$('#al10').find('option').remove();
control.childrenByPropertyId["comune"].setValue("");
$('#al10').append('<option value="">'+"-- Select --"+'</option>');
control.childrenByPropertyId["comune"].setValue("-- Select --");
}
//if(control.childrenByPropertyId["comune"].setValue()==null){
$('#al10').append('<option value="'+json.TIPOLOGICHE.T_PROVINCE.PROV[i].COM[x].code+'">'+json.TIPOLOGICHE.T_PROVINCE.PROV[i].COM[x].desc+'</option>');
//}
}
}
}
}
})
});
//fine comune
questo è il json
Codice PHP:
{
"TIPOLOGICHE": {
"T_PROVINCE": {
"PROV": [
{
"ag": "Sud",
"code": "1",
"desc": "AG",
"name": "Agrigento",
"reg": "Sicilia",
"COM": [
{
"cap": "92100",
"code": "7550",
"desc": "AGRIGENTO"
},
{
"cap": "92010",
"code": "7551",
"desc": "ALESSANDRIA DELLA ROCCA"
},
{
"cap": "92020",
"code": "7592",
"desc": "VILLAFRANCA SICULA"
}
]
},
{
"ag": "Nord",
"code": "2",
"desc": "AL",
"name": "Alessandria",
"reg": "Piemonte",
"COM": [
{
"cap": "15011",
"code": "860",
"desc": "ACQUI TERME"
},
{
"cap": "15060",
"code": "861",
"desc": "ALBERA LIGURE"
},
{
"cap": "15060",
"code": "1049",
"desc": "VOLTAGGIO"
}
]
}
]
}
}
}