Select dinamica asp non funziona su chrome e ff -> si su ie...help

Paolo, controlla bene. Su Firefox e Chrome.
Se selezioni CAMPANIA, SALERNO, ACERNO la provincia cambia da Salerno a Avellino... ecco l'errore.
Questo non accade su IE dove è corretto. (Acerno fa provincia di Salerno).

;)
 
In 30 minuti l'ho completamente rifatto.

1° personalizzati la connessione al DB:
Codice:
strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database.mdb")

2° copia ed incolla il seguente codice in una pagina chiamata default.asp:

Codice:
<%

' connessione al DB
Dim strConnect
	strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database.mdb") 

' Query String
Dim regione
Dim provincia
Dim comune
	regione = Trim(Mid(Request.QueryString("regione"), 1, 50))
	provincia = Trim(Mid(Request.QueryString("provincia"), 1, 50))
	comune = Trim(Mid(Request.QueryString("comune"), 1, 50))
	

' >>>>>>>>>>> SELEZIONO LA REGIONE <<<<<<<<<<<<<

If regione = "" Then 

%>
Seleziona regione: <select name="regione">
<option value=""></option><%

'  *** recupero le regioni ***
Set Regione = Server.CreateObject("ADODB.Recordset")
	Regione.ActiveConnection = strConnect
	Regione.Source = "SELECT DISTINCT pr_regione FROM province" 
	Regione.CursorType = 0
	Regione.CursorLocation = 2
	Regione.LockType = 1
	Regione.Open()

	Regione_numRows = 0
	Rp__Regione = 999
	Regione_numRows = Regione_numRows + Rp__Regione

While ((Rp__Regione <> 0) AND (NOT Regione.EOF)) 
	
	Rs_regione = (Regione.Fields.Item("Pr_Regione").Value)

%><option value="<%=Rs_regione%>" onClick="parent.location = 'default.asp?regione=<%=Rs_regione%>'"><%=Rs_regione%></option><%

	Rp__Regione=Rp__Regione+1
	Rp__Regione=Rp__Regione-1
	Regione.MoveNext()
Wend
	Regione.Close
Set Regione = Nothing ' chiudo il recordset

%>
</select>
<% Else %>
Regione selezionata: <%=regione%><br /><br />
<% 

End If 


' >>>>>>>>>>> SELEZIONO LA PROVINCIA <<<<<<<<<<<<<

If (Request.QueryString("regione") <> "") AND (Request.QueryString("provincia") = "") Then 

%>
Seleziona provincia: <select name="provincia">
<option value=""></option><%

'  *** recupero le provincie ***
Set Provincia = Server.CreateObject("ADODB.Recordset")
	Provincia.ActiveConnection = strConnect
	Provincia.Source = "SELECT * FROM province WHERE pr_regione= '"&regione&"'" 
	Provincia.CursorType = 0
	Provincia.CursorLocation = 2
	Provincia.LockType = 1
	Provincia.Open()

	Provincia_numRows = 0
	Rp__Provincia = 999
	Provincia_numRows = Provincia_numRows + Rp__Provincia

While ((Rp__Provincia <> 0) AND (NOT Provincia.EOF)) 
	
	Rs_Provincia = (Provincia.Fields.Item("Pr_Desc").Value)
	Rs_Provincia_Sigla = (Provincia.Fields.Item("Pr_Sigla").Value)

%><option value="<%=Rs_Provincia%>" onClick="parent.location = 'default.asp?regione=<%=regione%>&provincia=<%=Rs_Provincia_Sigla%>'"><%=Rs_Provincia%></option><%

	Rp__Provincia=Rp__Provincia+1
	Rp__Provincia=Rp__Provincia-1
	Provincia.MoveNext()
Wend
	Provincia.Close
Set Provincia = Nothing ' chiudo il recordset

%>
</select>
<% ElseIf (Request.QueryString("regione") <> "") AND (Request.QueryString("provincia") <> "") Then %>
Sigla provincia selezionata: <%=Provincia%><br /><br />
<% 

End If 


' >>>>>>>>>>> SELEZIONO IL COMUNE <<<<<<<<<<<<<

If (Request.QueryString("regione") <> "") AND (Request.QueryString("provincia") <> "") AND (Request.QueryString("comune") = "") Then 

%>
Seleziona comune: <select name="comune">
<option value=""></option><%

'  *** recupero i comuni associati alla provincia ***
Set Comune = Server.CreateObject("ADODB.Recordset")
	Comune.ActiveConnection = strConnect
	Comune.Source = "SELECT loc_desc, loc_prov FROM comuni WHERE Loc_Prov = '"&provincia&"'" 
	Comune.CursorType = 0
	Comune.CursorLocation = 2
	Comune.LockType = 1
	Comune.Open()

	Comune_numRows = 0
	Rp__Comune = 999 ' numero max record visualizzati
	Comune_numRows = Comune_numRows + Rp__Comune

While ((Rp__Comune <> 0) AND (NOT Comune.EOF)) 
	
	Rs_Comune = (Comune.Fields.Item("Loc_Desc").Value)

%><option value="<%=Rs_Comune%>" onClick="parent.location = 'default.asp?regione=<%=regione%>&provincia=<%=provincia%>&comune=<%=Rs_Comune%>'"><%=Rs_Comune%></option><%

	Rp__Comune=Rp__Comune+1
	Rp__Comune=Rp__Comune-1
	Comune.MoveNext()
Wend
	Comune.Close
Set Comune = Nothing ' chiudo il recordset

%>
</select>
<% ElseIf (Request.QueryString("regione") <> "") AND (Request.QueryString("provincia") <> "") AND (Request.QueryString("comune") <> "") Then %>
Comune selezionata: <%=Comune%><br /><BR />
<% 

End If 


' >>>>>>>>>>> RISULTATO FINALE <<<<<<<<<<<<<

If (Request.QueryString("regione") <> "") AND (Request.QueryString("provincia") <> "") AND (Request.QueryString("comune") <> "") Then 

'  *** RISULTATO FINALE ***
Set rs = Server.CreateObject("ADODB.Recordset")
	rs.ActiveConnection = strConnect
	rs.Source = "Select * from comuni where loc_desc='"&comune&"'" 
	rs.CursorType = 0
	rs.CursorLocation = 2
	rs.LockType = 1
	rs.Open()
%>
<br/>
<br/>
<br/>
<div align="center">Hai scelto il comune di <b><%=comune%> ( <%=provincia%> )</b></div>
<br/>
<div align="center">in  <b><%=regione%></b></div>
<div align="center">val1 =   <b><%=rs("val1")%></b></div>
<div align="center">val2 =   <b><%=rs("val2")%></b></div>
<div align="center">zona =   <b><%=rs("zona")%></b></div>
<div align="center">
<br />
<br />
<br />
<a href="default.asp">Reset</a>
<br />
</div>
<%

	rs.Close
Set rs = Nothing ' chiudo il recordset


End If 

' Fine script 28/12/2010

%>

Vedi se ti garba così :rolleyes:

Ovvio che questo file l'ho testato 5 minuti, lo si può migliorare alla grande in quanto il 99% è tutto ASP, compatibile con qualsiasi browser e qualsiasi versione.
 
Ultima modifica:
Accidenti, hai ragione.
L'unico frammento di Javascript non funziona come deve.

Senti, l'ho adattato senza una riga di Javascript, dagli un'occhio se ti può andar bene così, sicuramente sarà compatibile con tutto (spero):

Codice:
<%
' connessione al DB
Dim strConnect
	strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database.mdb") 

' Query String
Dim regione
Dim provincia
Dim comune
	regione = Trim(Mid(Request.Form("regione"), 1, 50))
	provincia = Trim(Mid(Request.Form("provincia"), 1, 50))
	comune = Trim(Mid(Request.Form("comune"), 1, 50))
	

' >>>>>>>>>>> SELEZIONO LA REGIONE <<<<<<<<<<<<<

If Trim(Mid(Request.Form("regione"), 1, 50)) = "" Then 

%>
<form method="post" action="<%=Request.ServerVariables("PATH_INFO")%>">
Seleziona regione: <select name="regione">
<option value=""></option><%

'  *** recupero le regioni ***
Set Regione = Server.CreateObject("ADODB.Recordset")
	Regione.ActiveConnection = strConnect
	Regione.Source = "SELECT DISTINCT pr_regione FROM province" 
	Regione.CursorType = 0
	Regione.CursorLocation = 2
	Regione.LockType = 1
	Regione.Open()

	Regione_numRows = 0
	Rp__Regione = 999
	Regione_numRows = Regione_numRows + Rp__Regione

While ((Rp__Regione <> 0) AND (NOT Regione.EOF)) 
	
	Rs_regione = (Regione.Fields.Item("Pr_Regione").Value)

%><option value="<%=Rs_regione%>"><%=Rs_regione%></option><%

	Rp__Regione=Rp__Regione+1
	Rp__Regione=Rp__Regione-1
	Regione.MoveNext()
Wend
	Regione.Close
Set Regione = Nothing ' chiudo il recordset

%>
</select>
<input type="submit" name="Go" value="Go" />
</form>
<% Else %>
Regione selezionata: <%=regione%><br /><br />
<% 

End If 


' >>>>>>>>>>> SELEZIONO LA PROVINCIA <<<<<<<<<<<<<

If (Trim(Mid(Request.Form("regione"), 1, 50)) <> "") AND (Trim(Mid(Request.Form("provincia"), 1, 50)) = "") Then 

%>
<form method="post" action="<%=Request.ServerVariables("PATH_INFO")%>">
<input type="hidden" name="regione" value="<%=regione%>" />
Seleziona provincia: <select name="provincia">
<option value=""></option><%

'  *** recupero le provincie ***
Set Provincia = Server.CreateObject("ADODB.Recordset")
	Provincia.ActiveConnection = strConnect
	Provincia.Source = "SELECT * FROM province WHERE pr_regione= '"&regione&"'" 
	Provincia.CursorType = 0
	Provincia.CursorLocation = 2
	Provincia.LockType = 1
	Provincia.Open()

	Provincia_numRows = 0
	Rp__Provincia = 999
	Provincia_numRows = Provincia_numRows + Rp__Provincia

While ((Rp__Provincia <> 0) AND (NOT Provincia.EOF)) 
	
	Rs_Provincia = (Provincia.Fields.Item("Pr_Desc").Value)
	Rs_Provincia_Sigla = (Provincia.Fields.Item("Pr_Sigla").Value)

%><option value="<%=Rs_Provincia_Sigla%>"><%=Rs_Provincia%></option><%

	Rp__Provincia=Rp__Provincia+1
	Rp__Provincia=Rp__Provincia-1
	Provincia.MoveNext()
Wend
	Provincia.Close
Set Provincia = Nothing ' chiudo il recordset

%>
</select>
<input type="submit" name="Go" value="Go" />
</form>

<% ElseIf (Trim(Mid(Request.Form("regione"), 1, 50)) <> "") AND (Trim(Mid(Request.Form("provincia"), 1, 50)) <> "") Then %>
Sigla provincia selezionata: <%=Provincia%><br /><br />
<% 

End If 


' >>>>>>>>>>> SELEZIONO IL COMUNE <<<<<<<<<<<<<

If (Trim(Mid(Request.Form("regione"), 1, 50)) <> "") AND (Trim(Mid(Request.Form("provincia"), 1, 50)) <> "") AND (Trim(Mid(Request.Form("comune"), 1, 50)) = "") Then 

%>
<form method="post" action="<%=Request.ServerVariables("PATH_INFO")%>">
<input type="hidden" name="regione" value="<%=regione%>" />
<input type="hidden" name="provincia" value="<%=provincia%>" />
Seleziona comune: <select name="comune">
<option value=""></option><%

'  *** recupero i comuni ***
Set Comune = Server.CreateObject("ADODB.Recordset")
	Comune.ActiveConnection = strConnect
	Comune.Source = "SELECT loc_desc, loc_prov FROM comuni WHERE Loc_Prov = '"&provincia&"'" 
	Comune.CursorType = 0
	Comune.CursorLocation = 2
	Comune.LockType = 1
	Comune.Open()

	Comune_numRows = 0
	Rp__Comune = 999
	Comune_numRows = Comune_numRows + Rp__Comune

While ((Rp__Comune <> 0) AND (NOT Comune.EOF)) 
	
	Rs_Comune = (Comune.Fields.Item("Loc_Desc").Value)

%><option value="<%=Rs_Comune%>"><%=Rs_Comune%></option><%

	Rp__Comune=Rp__Comune+1
	Rp__Comune=Rp__Comune-1
	Comune.MoveNext()
Wend
	Comune.Close
Set Comune = Nothing ' chiudo il recordset

%>
</select>
<input type="submit" name="Go" value="Go" />
</form>
<% ElseIf (Trim(Mid(Request.Form("regione"), 1, 50)) <> "") AND (Trim(Mid(Request.Form("provincia"), 1, 50)) <> "") AND (Trim(Mid(Request.Form("comune"), 1, 50)) <> "") Then %>
Comune selezionato: <%=Comune%><br /><BR />
<% 

End If 


' >>>>>>>>>>> RISULTATO FINALE <<<<<<<<<<<<<

If (Request.Form("regione") <> "") AND (Request.Form("provincia") <> "") AND (Request.Form("comune") <> "") Then 

Set rs = Server.CreateObject("ADODB.Recordset")
	rs.ActiveConnection = strConnect
	rs.Source = "Select * from comuni where loc_desc='"&comune&"'" 
	rs.CursorType = 0
	rs.CursorLocation = 2
	rs.LockType = 1
	rs.Open()
%>
<br/><br/><br/><br/><br/><br/>
<div align="center">Hai scelto il comune di <b><%=comune%> ( <%=provincia%> )</b></div>
<br/>
<div align="center">in  <b><%=regione%></b></div>
<div align="center">val1 =   <b><%=rs("val1")%></b></div>
<div align="center">val2 =   <b><%=rs("val2")%></b></div>
<div align="center">zona =   <b><%=rs("zona")%></b></div>
<div align="center"><br /><br /><br /><a href="<%=Request.ServerVariables("PATH_INFO")%>">Reset</a><br /></div>
<%

	rs.Close
Set rs = Nothing ' chiudo il recordset


End If 

' script 28/12/2010
' modificato 29/12/2010

%>

In pratica il seguente codice:
Codice:
<option value="<%=Rs_regione%>" [B][COLOR="red"]onClick="parent.location = 'default.asp?regione=<%=Rs_regione%>'"[/COLOR][/B]>
si occupava del submit, probabilmente non funziona con tutti i browser, mi dispiace.
 
Ultima modifica:

Discussioni simili