Newsgroup: it.comp.lang.javascript
Titolo: Form con doppia select

Ho creato una form (in php) in cui ci sono 2 select una dipendente 
dall'altra, quando seleziono la prima la seconda si modifica (per 
capirci tipo l'esempio che si vede in giro per la rete della scelta 
province->comuni).
Il problema è che quando modifico la prima select mi fa la submit della 
form e mi aggiunge i campi nel db dato che l'evento onchange sulla 
select è così:
<select name='categoria' onchange=document.form1.submit();>
Vorrei fare in modo che si possano selezionare le 2 select e solo alla 
fine il tutto venga inviato tramite submit.
Voi normalmente come fate per superare questo problema? Grazie in anticipo!

*Fabio* ha scritto:

var firstSelected = false;
var secondSelected = false;
function onChangeFirst()
{
  firstSelected = true;
}
function onChangeSecond()
{
  secondSelected = true;
}
function doSubmitOnChange() {
 if (firstSelected && secondSelected )
    document.form1.submit();
}
document.firstSelect.onchange=onChangeFirst;
document.secondSelect.onchange=onChangeSecond;

 document.secondSelect.onchange=onChangeSecond;
Mh perň cosě non mi interroga il db per popolare la seconda select dato 
che non fa submit o sbaglio?

 che non fa submit o sbaglio?
Ciccio, almeno la business-logic la vuoi scrivere?
Rispettivamente in onChangeFirst e onChangeSecond

 Rispettivamente in onChangeFirst e onChangeSecond
Ciccio la business-logic l'ho già scritta solo non sono pratico di 
javascript e non ho ben capito come si dovesse utilizzare quel codice 
che mi hai scritto e di cui ti ringrazio.

*Fabio* ha scritto:

Ok ricominciamo.
All'interno del tag <script>, che suppongo sia all'interno del tag
<head>, inserisci il seguente codice javascript:
------------------------INZIO----------------------
var firstSelected = false;
var secondSelected = false;
// Questa è la funzione che viene eseguita tutte le volte che cambi
selezione
// nella prima select, che ho chiamato "firstSelect"
function onChangeFirst()
{
  fs = document.getElementById('firstSelect');
  if (fs.options[.fs.selectedIndex].value != "")
  {
    firstSelected = true;
    // E qui ci va la tua logica di business
  }
  else
  {
    firstSelected = false;
  }
  doSubmitOnChange();
}
// Questa è la funzione che viene eseguita tutte le volte che cambi
selezione
// nella seconda select, che ho chiamato "secondSelect"
function onChangeSecond()
{
  fs = document.getElementById('secondSelect');
  if (fs.options[.fs.selectedIndex].value != "")
  {
    secondSelected = true;
    // E qui ci va la tua logica di business
  }
  else
  {
    secondSelected = false;
  }
  doSubmitOnChange();
}
// Questa è la funzione che viene eseguita tutte le volte che avviene
un cambio di stato
// in una delle due select. Ma fa la submit solo quando entrambi i flag
(firstSelected e
// secondSelected) di verifica sono "true".
function doSubmitOnChange() {
 if (firstSelected && secondSelected )
    document.form1.submit();
}
// Queste due istruzioni assegnano all'evento onchange delle select la
relativa funzione.
document.firstSelect.onchange=onChangeFirst;
document.secondSelect.onchange=onChangeSecond;
------------------------FINE-----------------------
Todo occhei?
Himgi