- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- jquery e select dinamiche per provincia, comune e cap
-
Ciao,
cerco di portarti parte dell'esempio:[php]
//variabili globali
var prov_glob= null;
var com_glob= null;
var cap_glob= null;$("#provincia").change(function() {
//SALVO IL VALORE SCELTO PER LA PROVINCIA
prov_glob = $("#provincia").val();var prov = $("#provincia").val(); var comune = $("#citta").val(); $.ajax({ type: "POST", url: "checkcomune.php", data: "provincia="+ prov + "&comune="+ comune, success: function(resp){ $("#citta").ajaxComplete(function(event, request, settings){ $(this).html(resp); }); } });
}); //fine provincia.change
[/php]
E poi la stessa cosa quando si scatena l'evento onchange sui comuni.
Finita la function che gestisce la scelta dei comuni riassegni alla select dei comuni il valore salvato in com_glob.Ciao
-
Niente da fare.
[...]Grazie
Nicola
-
Io l'ho fatto usando il plugin jquery: linkedSelect
-
Ciao,
ho provato, i risultati non sono proprio come mi aspettavo, è di una lentezza impressionante (forse per la grossa mole di dati da trattare) inoltre mi da un popup con un errore js.Grazie
Nicola
-
A me funziona benissimo, dipende come l'hai applicato, io ho tre select, la prima delle regioni è normale, selezionata la regione presento le provincie e poi i comuni:
$(document).ready(function(){ $('#provincia').linkedSelect('ajaxsave.php?ps=comune','#comune',{firstOption: 'Selezionare il comune', loadingText: 'Attendere...'}); $('#regione').linkedSelect('ajaxsave.php?ps=provincia','#provincia',{firstOption: 'Selezionare la provincia', loadingText: 'Attendere...'}); });
ajaxsave.php mi torna i dati necessari.
-
Ah c'è proprio il metodo linkedselect...
Io invece ho cercato quella parola su google e ho trovato altro... che ho provato... con tutte le conseguenze che ti ho descritto.Ti sarei grato se mi posteresti il link alla libreria.
Grazie mille
Nicola
-
Ho provato anche a cercarla tra i plugin sul sito ufficiale ma non me lo ha trovato
-
Effettivamente il sito non c'è più, ti posto il codice di jquery.linkedselect.js:
(function($){ $.fn.linkedSelect = function(url,destination,params) { var params = $.extend({ firstOption : 'Please Select', loadingText : 'Loading...' },params); var $dest = $(destination); return this.each(function(){ $(this).bind('change', function() { var $$ = $(this); $dest.attr('disabled','false') .append('<option value="">' +params.loadingText+ '</option>') .ajaxStart(function(){ $$.show(); }); $.getJSON(url,{str: $$.val() }, function(j){ if (j.length > 0) { var options = '<option value="">' +params.firstOption+ '</option>'; for (var i = 0; i < j.length; i++) { options += '<option value="' + j*.optionValue + '">' + j*.optionDisplay + '</option>'; } } $dest.removeAttr('disabled') .html(options) .find('option:first') .attr('selected', 'selected'); }); }); }); }; })(jQuery);
-
Grazie mille.
Ora provo... al max ti chiederò delle dritte sull'utilizzo.Dovrò modificare il js leggermente perchè in realtà io ho due combo e una textbox il cui valore è univocamente definito dalla scelta della seconda combo.
Ti farò sapere.
Grazie
Nicola
-
Ciao,
finalmente ho trovato 5 minuti per provare questo codice.Sorge la prima domanda: in che modo la funzione (nel tuo caso ajaxsave.php) ti restituisce i valori?
Grazie
Nicola
-
Ciao ho risolto,
ho semplicemente modificato il js che mi hai postato adattandolo all'oggetto JSON che il mio script emette.
-
Faccio un attimo il punto della situazione:
ho brillantemente risolto il problema delle due linked select (seleziona provincia --> elenco province).
Ora vorrei che selezionando un comune, nella textbox successiva vorrei visualizzare il cap, che è in corrispondenza 1 a 1 con il comune selezionato.
Utilizzando la stessa linkedselect.js riesco a ricavarmi, dalla checkcap.php, il cap corretto attraverso un json message, ad esempio
[{"txtValue" : "60020"}]Mi manca l'ultimo pezzettino... ovvero riuscire a visualizzarlo nella textbox.Come posso fare?
-
Ciao,
dovrebbe essere:[php]
document.getElementById(idTextbox).value = il cap;
[/php]Con JQuery:[php]
$('#' + idTextbox).val(il cap);
[/php]Ciao
-
Eh purtroppo non è cosi facile, mi sono un po incasinato.
Mi spiego:
nella pagina principale ho questo codice$(document).ready(function(){ $('#citta').linkedSelect('checkcap2.php','#cap'); $('#provincia').linkedSelect('checkcomune2.php','#citta',{firstOption: 'Selezionare il comune', loadingText: 'Attendere...'}); }
La linked select è quella indicata da Senamion. Ho provato a modificarla in modo di passargli un ulteriore parametro 'isSelectBox' che vale 0 o 1 e mettere una if nella quale mi viene restituito
$.getJSON(url,{str: $$.val() }, function(j){ if (j.length > 0) { var options = '<option value="">' +params.firstOption+ '</option>'; for (var i = 0; i < j.length; i++) { options += '<option value="' + j*.optionValue + '">' + j*.optionDisplay + '</option>'; } } $dest.removeAttr('disabled') .html(options) .find('option:first') .attr('selected', 'selected'); });
Se si tratta di select box, oppure
$dest.val()=j.txtValue;
..ma non va
-
Ciao,
prova così:
[PHP]
$dest.val(j.txtValue);[/PHP]Ciao
-
Ciao,
l'ho modificata in questo modo ma non funziona....(function($){ $.fn.linkedSelect = function(url,destination,params) { var params = $.extend({ firstOption : 'Please Select', loadingText : 'Loading...' },params); var $dest = $(destination); return this.each(function(){ $(this).bind('change', function() { var $$ = $(this); $dest.attr('disabled','false') .append('<option value="">' +params.loadingText+ '</option>') .ajaxStart(function(){ $$.show(); }); if(params.isSelectBox==1){ $.getJSON(url,{str: $$.val() }, function(j){ if (j.length > 0) { var options = '<option value="">' +params.firstOption+ '</option>'; for (var i = 0; i < j.length; i++) { options += '<option value="' + j*.optionValue + '">' + j*.optionDisplay + '</option>'; } } $dest.removeAttr('disabled') .html(options) .find('option:first') .attr('selected', 'selected'); }); }else if(params.isSelectBox==0){ $.getJSON(url,{str: $$.val() }, function(j){ $dest.val(j.txtValue); }); } }); }); }; })(jQuery);
-
Ciao,
mi è parso di capire che j è un array?Allora:
[php]$('#' + ID_dest).val(j*.txtValue);
[/php]
Ciao
-
Si ma contiene solo un valore nel caso del cap. Devo mettere l'indice comunque?
-
Funzionaaaaaaaaaaaaaaaaaaaaaaaaaa
ho messo semplicemente j[0].txtValue!!!Ragazzi non so come ringraziarvi!
Grazie
Nicola