Foros del Web » Programando para Internet » Javascript »

Listas dependientes y el <!DOCTYPE...

Estas en el tema de Listas dependientes y el <!DOCTYPE... en el foro de Javascript en Foros del Web. Hola a tod@s: Espero que este sea el apartado apropiado para este tema. Tengo el siguiente código para listas dependientes: Código: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <!--#include file="conexxiones/novo6CONEX9print.asp" ...
  #1 (permalink)  
Antiguo 13/10/2006, 17:43
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
Listas dependientes y el <!DOCTYPE...

Hola a tod@s:

Espero que este sea el apartado apropiado para este tema.

Tengo el siguiente código para listas dependientes:

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="conexxiones/novo6CONEX9print.asp" -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Contacto - Prueba de Listas</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="javascript" src="x_selectCambio.js" type="text/javascript"></script>
</head>

<body>
<form action="" method="post" name="f_consult" id="f_consult">
<table id="consultPED" style="width:100%;" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><label for="prov">&nbsp;Provincia </label><img src="imags/num2.gif" width="14" height="9" /><br />
<select name="prov" class="campoText" id="prov" onchange="cambioProv(document.forms.f_consult.prov[selectedIndex].value)">
<%

Dim rs_Provincia
Set rs_Provincia = Server.CreateObject("ADODB.Recordset")
rs_Provincia.ActiveConnection = conexionNovPri
rs_Provincia.Source = "SELECT * FROM PROVINCIAS"
rs_Provincia.CursorType = 0
rs_Provincia.CursorLocation = 3
rs_Provincia.LockType = 3
rs_Provincia.Open

do until rs_Provincia.EOF
%>
<option value="<%=rs_Provincia.Fields("IDProv")%>"><%=rs_Provincia.Fields("Provincia")%></option><%

rs_Provincia.movenext
loop
%>
</select></td>
    <td><label for="locali">&nbsp;Localidad </label><img src="imags/num2.gif" width="14" height="9" /><br /><select name="locali" id="locali" class="campoText">
<option value="inicLocali">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Seleccione una</option>
<option value="inicLocali">-------------------------------------</option></select>
<script language="javascript" type="text/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

Dim rs_Localidad, vcuenta, vprov
Set rs_Localidad = Server.CreateObject("ADODB.Recordset")
rs_Localidad.ActiveConnection = conexionNovPri
rs_Localidad.Source = "SELECT * FROM LOCALIDADES"
rs_Localidad.CursorType = 0
rs_Localidad.CursorLocation = 3
rs_Localidad.LockType = 3
rs_Localidad.Open

vcuenta = 0
vprov = "basura"
do until rs_Localidad.EOF 
	if (vprov <> rs_Localidad.Fields("deProvincia")) then
	' Si cambio de Provincia, se empieza a contar desde 0
		vcuenta = 0
		vprov = rs_Localidad.Fields("deProvincia")
	'además,  hay que crear un nuevo array para la Provincia
%>
var provincia_<%=vprov%> = new Array();
<%
	end if
%>
provincia_<%=vprov%>[<%=vcuenta%>]=new Tupla("<%=rs_Localidad.Fields("Localidad")%>","<%=rs_Localidad.Fields("IDLocal")%>");

<%
rs_Localidad.MoveNext
vcuenta = vcuenta + 1
loop
%>

var contador;

function cambioProv ( array ) {
// Compone la lista dependiente (LOCALIDADES) a partir
// del valor de la opción escogida en la lista "padre" (PROVINCIAS)
BorrarLista();
array = eval("provincia_" + array);

	for (contador=0; contador<array.length; contador++) 
	{
	// añade elementos nuestro combobox
	var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
	
	f_consult.locali.options[contador] = optionObj;
	} // for
} // cambioProv


function BorrarLista() {
	f_consult.locali.length=0;
}

//Inicializamos
cambioProv (1);

document.forms.f_consult.prov.selectedIndex=0;
//Esta línea hace que se reinicie la lista Provincias con el primer valor de esta
//al enviar el formulario

//-->
</script></td>
    <td id="otraProv" style="display:none;"><label for="otraLPP">&nbsp;Otra Localidad, Provincia, Pa&iacute;s </label><img src="imags/num2.gif" width="14" height="9" /><br /><input type="text" name="otraLPP" id="otraLPP" onfocus="if(this.value==this.defaultValue)this.value=''" value="Localidad / Provincia / País" class="campoText anchOtraLPP" /></td>
  </tr>
</table>
<input name="" type="reset" />
</form>
</body>
</html>
De primeras, funciona bien en Internet Explorer pero en otros, como el Firefox, el cambio de la lista Provincias para que se actualice la lista de Localidades no va y la lista de Localidades se queda intacta.

Me he dado cuenta que si quito el encabezado del html...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

...entonces el cambio de lista a lista si funciona en cualquier navegador. Pero el quitar ese bloque afecta a ciertos estilos de formato que tengo establecidos en el archivo original dónde tengo el código completo...

¿Alguien tendría una solución para que las listas dependientes estas funcionen correctamente en cualquier navegador y con el bloque ese del DOCTYPE?

Gracias...

PD: bueno y si alguien tiene otro código de listas dependientes que funcione correctamente bajo los criterios expuestos...

Saludos,

zacktagnan.
========================================
  #2 (permalink)  
Antiguo 15/10/2006, 19:27
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
¿Ninguna sugerencia para resolver el problemilla?

¿Ni siquiera otro código de listas dependientes que funcione correctamente bajo los criterios expuestos...?
  #3 (permalink)  
Antiguo 16/10/2006, 18:30
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
Bueno, ya lo he resuelto basándome y adaptando mi código al expuesto aquí:

http://www.quirksmode.org/js/options.html

Pues eso...

Saludos,

zacktagnan.
====================================
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:11.