3 combos enlazados
Tengo una página con unos combobox enlazados, el problema es que no se como se hace para que cuando un combo cambie el otro cambie también, lo único que conseguí fue este código pero no tengo idea de javascript, si alguno me puede dar una mano con eso, o decir como se hace se los agradecería. Si tienen algo más fácil también se los agradezco
Saludos
Sergio
P.D. Les paso el código que tengo que baje de internet para adaptarlo.
<HTML>
<HEAD>
<TITLE>Listas </TITLE>
</HEAD>
<BODY>
<H2><CENTER>Listas </CENTER></H2>
<FORM NAME="Listas" METHOD="POST" ACTION="receive.asp">
<B>Pais</B>
<SELECT NAME="Categorias" SIZE="1"
OnChange="ComponerLista (document.forms.Listas.Categorias[selectedIndex].value);">
<%
Dim oConn, rs, SQL, cuenta, categoria
set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bd\Negocios.mdb")
SQL="SELECT * FROM pa"
rs.Open SQL, oConn
cuenta=1
while not rs.EOF
%>
<OPTION VALUE="<%=rs.Fields("IdPais")%>"
<% if cuenta=1 then%>
SELECTED
<%end if%>>
<%=rs.Fields("Pais")%></OPTION>
<%
rs.MoveNext
cuenta=cuenta+1
wend
rs.Close
%>
</SELECT>
<P><B>provincia</B>
<SELECT NAME="Productos" SIZE="1">
</SELECT>
<br>
<br>
ciudad
<SELECT NAME="Productos2" SIZE="1">
</SELECT>
<br>
<br>
<P><INPUT TYPE="submit"></FORM>
<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<%
'Vamos a crear nuestros arrays de productos desde ASP
'El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript
SQL="SELECT * FROM Provi "
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("Idpais") then
' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("Idpais")
%>
var opciones<%=cat%> = new Array();
<%
end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("provincia")%>","<%=rs.Fields("IdProvincia")%>");
<%
cuenta=cuenta+1
rs.MoveNext
wend
%>
<%
'Limpiamos objetos
rs.Close
set rs=nothing
oConn.Close
set oConn=nothing
%>
var contador;
function ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2);
Listas.Productos.options[contador] = optionObj;
} // for
} // ComponerLista
function BorrarLista() {
Listas.Productos.length=0;
}
//Inicializamos
ComponerLista (1);
-->
</SCRIPT>
<br>
</FORM>
</BODY>
</HTML>
Saludos
Sergio
P.D. Les paso el código que tengo que baje de internet para adaptarlo.
<HTML>
<HEAD>
<TITLE>Listas </TITLE>
</HEAD>
<BODY>
<H2><CENTER>Listas </CENTER></H2>
<FORM NAME="Listas" METHOD="POST" ACTION="receive.asp">
<B>Pais</B>
<SELECT NAME="Categorias" SIZE="1"
OnChange="ComponerLista (document.forms.Listas.Categorias[selectedIndex].value);">
<%
Dim oConn, rs, SQL, cuenta, categoria
set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bd\Negocios.mdb")
SQL="SELECT * FROM pa"
rs.Open SQL, oConn
cuenta=1
while not rs.EOF
%>
<OPTION VALUE="<%=rs.Fields("IdPais")%>"
<% if cuenta=1 then%>
SELECTED
<%end if%>>
<%=rs.Fields("Pais")%></OPTION>
<%
rs.MoveNext
cuenta=cuenta+1
wend
rs.Close
%>
</SELECT>
<P><B>provincia</B>
<SELECT NAME="Productos" SIZE="1">
</SELECT>
<br>
<br>
ciudad
<SELECT NAME="Productos2" SIZE="1">
</SELECT>
<br>
<br>
<P><INPUT TYPE="submit"></FORM>
<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<%
'Vamos a crear nuestros arrays de productos desde ASP
'El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript
SQL="SELECT * FROM Provi "
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("Idpais") then
' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("Idpais")
%>
var opciones<%=cat%> = new Array();
<%
end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("provincia")%>","<%=rs.Fields("IdProvincia")%>");
<%
cuenta=cuenta+1
rs.MoveNext
wend
%>
<%
'Limpiamos objetos
rs.Close
set rs=nothing
oConn.Close
set oConn=nothing
%>
var contador;
function ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2);
Listas.Productos.options[contador] = optionObj;
} // for
} // ComponerLista
function BorrarLista() {
Listas.Productos.length=0;
}
//Inicializamos
ComponerLista (1);
-->
</SCRIPT>
<br>
</FORM>
</BODY>
</HTML>
1 Respuesta
Respuesta de smunoz
1