Foros del Web » Programando para Internet » Javascript »

Enlaces en formulario.

Estas en el tema de Enlaces en formulario. en el foro de Javascript en Foros del Web. Hola a todos, aprovecho este mi primer post para saludar a todos los integrantes del foro que, aunque llevo tiempo leyendo, no me registre hasta ...
  #1 (permalink)  
Antiguo 18/10/2011, 08:14
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Enlaces en formulario.

Hola a todos, aprovecho este mi primer post para saludar a todos los integrantes del foro que, aunque llevo tiempo leyendo, no me registre hasta ahora... asi que un saludo a todos y gracias por esta gran labor que llevais a cabo.

Bien, el problema que tengo es el siguiente, estoy intentando hacer una web en la que encontrariamos un formulario para seleccionar comunidad (andalucia, aragon, valencia...etc) y provincia de cada comunidad (almeria, granada, jaen..etc) del modo que el usuario de la web eliga primero la comunidad y acto seguido se cargue en un segundo select las provincias de la comunidad seleccionada (si selecciona ANDALUCIA carga almeria, granada, jaen..etc), hasta aqui lo tengo resuelto con el siguiente codigo:

Código:
<form id="f1" name="f1" method="post" action="">
	                      <div align="center">
	                        <select name=Region onchange="cambia_provincia()">
	                                          <option value="0" selected="selected">Selecciona comunidad</option>
	                                          <option value="1">Andaluc&iacute;a</option>
	                                          <option value="2">Arag&oacute;n</option>
	                                          <option value="3">Canarias</option>
	                                          <option value="4">Cantabria</option>
	                                          <option value="5">Castilla y Le&oacute;n</option>
	                                          <option value="6">Castilla la Mancha</option>
	                                          <option value="7">Catalu&ntilde;a</option>
	                                          <option value="8">Ciudades aut&oacute;nomas</option>
	                                          <option value="9">Comunidad de Madrid</option>
	                                          <option value="10">Comunidad de Navarra</option>
	                                          <option value="11">Comunidad Valenciana</option>
	                                          <option value="12">Extremadura</option>
	                                          <option value="13">Galicia</option>
	                                          <option value="14">Islas Baleares</option>
	                                          <option value="15">La Rioja</option>
	                                          <option value="16">Pais Vasco</option>
	                                          <option value="17">Principado de Asturias</option>
	                                          <option value="18">Region de Murcia</option>
                                              </select>
	                                          <select name=provincia>
	                                                            <option value="-" selected="selected">-
                            </select>
                                              <input type="submit" name="Submit" value="Enviar" />
	                      </div>
                        </form>
Nos fijamos en el select asociado a la region de este formulario que, cuando se cambia la opción de Region, se debe llamar a la función cambia_provincia().

Bien pues en javascript tengo el siguiente codigo:

Código:
<script language="JavaScript">
var provincias_1=new Array("Selecciona provincia","Almería","Cádiz","Córdoba","Granada","Huelva","Jaén","Málaga","Sevilla")
var provincias_2=new Array("Selecciona provincia","Huesca","Teruel","Zaragoza")
var provincias_3=new Array("Selecciona provincia","El Hierro","Fuerteventura","Gran Canaria","La Gomera","La Palma","Lanzarote","Tenerife")
var provincias_4=new Array("Selecciona provincia","Cantabria/Santander")
var provincias_5=new Array("Selecciona provincia","Avila","Burgos","León","Palencia","Salamanca","Segovia","Soria","Valladolid","Zamora")
var provincias_6=new Array("Selecciona provincia","Albacete","Ciudad Real","Cuenca","Guadalajara","Toledo")
var provincias_7=new Array("Selecciona provincia","Barcelona","Girona","Lleida","Tarragona")
var provincias_8=new Array("Selecciona provincia","Ceuta y Melilla")
var provincias_9=new Array("Selecciona provincia","Madrid")
var provincias_10=new Array("Selecciona provincia","Navarra/Pamplona")
var provincias_11=new Array("Selecciona provincia","Alicante","Castellón","Valencia")
var provincias_12=new Array("Selecciona provincia","Badajoz","Cáceres")
var provincias_13=new Array("Selecciona provincia","La Coruña","Lugo","Orense","Pontevedra")
var provincias_14=new Array("Selecciona provincia","Formentera","Ibiza","Mallorca","Menorca")
var provincias_15=new Array("Selecciona provincia","La Rioja/Logroño")
var provincias_16=new Array("Selecciona provincia","Alava","Guipúzcoa","Vizcaya")
var provincias_17=new Array("Selecciona provincia","Asturias/Oviedo")
var provincias_18=new Array("Selecciona provincia","Murcia")

function cambia_provincia(){
    //tomo el valor del select del pais elegido
    var Region
    Region = document.f1.Region[document.f1.Region.selectedIndex].value
    //miro a ver si el pais está definido
    if (Region != 0) {
       //si estaba definido, entonces coloco las opciones de la provincia correspondiente.
       //selecciono el array de provincia adecuado
       mis_provincias=eval("provincias_" + Region)
       //calculo el numero de provincias
       num_provincias = mis_provincias.length
       //marco el número de provincias en el select
       document.f1.provincia.length = num_provincias
       //para cada provincia del array, la introduzco en el select
       for(i=0;i<num_provincias;i++){
          document.f1.provincia.options[i].value=mis_provincias[i]
          document.f1.provincia.options[i].text=mis_provincias[i]
       }
    }else{
       //si no había provincia seleccionada, elimino las provincias del select
       document.f1.provincia.length = 1
       //coloco un guión en la única opción que he dejado
       document.f1.provincia.options[0].value = "-"
       document.f1.provincia.options[0].text = "-"
    }
    //marco como seleccionada la opción primera de provincia
    document.f1.provincia.options[0].selected = true
} 
</script>
Bueno pues hasta aqui todo funciona correctamente, ahora el problema lo tengo en que no se como hacer para que al clickar en el boton "enviar" del formulario vaya a una pagina html en concreto, en definitiva, no se como poner enlaces a cada provincia para que al seleccionarla nos lleve a la pagina de esa provincia....

A ver si alguien me puede echar una mano...

Gracias de antemano y perdon por el ladrillo jejje...

Saludos.
  #2 (permalink)  
Antiguo 18/10/2011, 14:17
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

en el combo "provincias" añades el evento onchange, con este evento invocas una función y a esta función le pasa como parámetro "this.value". en la función usas window.location.href, para hacer la redirección, y a esto le asignas el parámetro a la url a la que se va a hacer la redirección
  #3 (permalink)  
Antiguo 18/10/2011, 14:43
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

Muchas gracias por contestar Isabelm, pero me siguen quedando muchas dudas...

Si no te entiendo mal seria el codigo del combo "provincia" asi:

Código:
<select name=provincia onchange="this.value">
	           <option value="-" selected="selected">-
               </select>
Pero lo de la funcion window.location.href no se como hacerlo la verdad... perdona por mi ignorancia...

Gracias de nuevo por tu ayuda.

Saludos.
  #4 (permalink)  
Antiguo 18/10/2011, 15:15
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

vamos a simplificarlo un poco mas
Cita:
<select name=provincia onchange="window.location.href='http.//www.' + this.value + '.html'">
  #5 (permalink)  
Antiguo 19/10/2011, 05:13
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

Hola IsaBelM, agrezco mucho tu ayuda de verdad, pero la verdad es que estoy muy muy pegado en este tema y lamento no poder entenderte bien y no saber como ponerla en practica...

Segun tu cita:
Código:
<select name=provincia onchange="window.location.href='http.//www.' + this.value + '.html'">
El "' + this.value + '" que deveria cargar?? deveria declararlo en javascript verdad? si es asi que debo poner en javascript??

Perdona mi ignorancia y te agradezco una vez mas tu ayuda, tambien entenderia que dejaras de ayudarme ya que lo que te estoy pidiendo es practicamente el codigo ya hecho por tu parte... yo lo he intentado pero devido a mi ignorancia no se como declarar ese valor en javascript.

Saludos.
  #6 (permalink)  
Antiguo 19/10/2011, 05:45
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

simplemente es copiarlo tal y como está. sólo tienes que editarlo para crear una url que exista, es decir puedes editar lo que está entre comillas simples (').
con ese código logras que cuando el usuario escoja una de las opciones del combo provincias sea redireccionado
  #7 (permalink)  
Antiguo 19/10/2011, 06:50
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

A ver, creo que no es eso lo que necesito... lo que yo necesito es que si un usuario elige en el combo provincia (que carga segun la region elegida) una provincia en concreto pues lo envie a la url de esa provincia, es decir si eligo Region= Andalucia me carga las provincias de andalucia en el combo "provincia" (almeria, huelva, granada...etc) y una vez eliga la provincia que quiero, por ejemplo almeria me envie a la url de Almeria, si eligo granada que me envie a la url de granada y asi sucesivamente con todas las provincias de todas las regiones de España.

Saludos.
  #8 (permalink)  
Antiguo 19/10/2011, 07:57
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

eso es justamente lo que hace
  #9 (permalink)  
Antiguo 19/10/2011, 08:35
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

Pero a ver, en los Array del codigo javascript que pongo en el primer post se puede ver que hay un total de 60 provincias y cada una enviaria a una url distinta y lo que tu me estas diciendo que haga, al menos a mi corto entender, es poner una sola url entre las comillas simples, como sabe a que url tiene que ir si yo solo el pongo una y en total hay 60 provincias?

Donde pongo las otras 59? y como las relaciono con la provincia seleccionada?

Saludos.

Última edición por gallo76; 19/10/2011 a las 09:07
  #10 (permalink)  
Antiguo 19/10/2011, 12:42
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

último intento. this.value es igual a la opción que el usuario encoja en combo
prueba esto
Cita:
<select name=provincia onchange="alert(this.value)">
<option value="-" selected="selected">-
<option value="1">Andaluc&iacute;a</option>
<option value="2">Arag&oacute;n</option>
<option value="3">Canarias</option>
<option value="4">Cantabria</option>
<option value="5">Castilla y Le&oacute;n</option>
<option value="6">Castilla la Mancha</option>
<option value="7">Catalu&ntilde;a</option>
<option value="8">Ciudades aut&oacute;nomas</option>
<option value="9">Comunidad de Madrid</option>
<option value="10">Comunidad de Navarra</option>
<option value="11">Comunidad Valenciana</option>
<option value="12">Extremadura</option>
<option value="13">Galicia</option>
<option value="14">Islas Baleares</option>
</select>
  #11 (permalink)  
Antiguo 19/10/2011, 13:34
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

No se si esque no me he explicado bien, no es de ese combo del que tiene que cargar la url, ese combo seria el de Region no el de provincia, al elegir la region en ese combo automaticamente se cargan las provincias correspondientes a la region seleccionada en el otro combo, el de provincia, mediante este codigo javascript:

Cita:
<script language="JavaScript">
var provincias_1=new Array("Selecciona provincia","Almería","Cádiz","Córdoba","Granada"," Huelva","Jaén","Málaga","Sevilla")
var provincias_2=new Array("Selecciona provincia","Huesca","Teruel","Zaragoza")
var provincias_3=new Array("Selecciona provincia","El Hierro","Fuerteventura","Gran Canaria","La Gomera","La Palma","Lanzarote","Tenerife")
var provincias_4=new Array("Selecciona provincia","Cantabria/Santander")
var provincias_5=new Array("Selecciona provincia","Avila","Burgos","León","Palencia","Sal amanca","Segovia","Soria","Valladolid","Zamora")
var provincias_6=new Array("Selecciona provincia","Albacete","Ciudad Real","Cuenca","Guadalajara","Toledo")
var provincias_7=new Array("Selecciona provincia","Barcelona","Girona","Lleida","Tarragon a")
var provincias_8=new Array("Selecciona provincia","Ceuta y Melilla")
var provincias_9=new Array("Selecciona provincia","Madrid")
var provincias_10=new Array("Selecciona provincia","Navarra/Pamplona")
var provincias_11=new Array("Selecciona provincia","Alicante","Castellón","Valencia")
var provincias_12=new Array("Selecciona provincia","Badajoz","Cáceres")
var provincias_13=new Array("Selecciona provincia","La Coruña","Lugo","Orense","Pontevedra")
var provincias_14=new Array("Selecciona provincia","Formentera","Ibiza","Mallorca","Menorc a")
var provincias_15=new Array("Selecciona provincia","La Rioja/Logroño")
var provincias_16=new Array("Selecciona provincia","Alava","Guipúzcoa","Vizcaya")
var provincias_17=new Array("Selecciona provincia","Asturias/Oviedo")
var provincias_18=new Array("Selecciona provincia","Murcia")

function cambia_provincia(){
//tomo el valor del select del pais elegido
var Region
Region = document.f1.Region[document.f1.Region.selectedIndex].value
//miro a ver si el pais está definido
if (Region != 0) {
//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=eval("provincias_" + Region)
//calculo el numero de provincias
num_provincias = mis_provincias.length
//marco el número de provincias en el select
document.f1.provincia.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.provincia.options[i].value=mis_provincias[i]
document.f1.provincia.options[i].text=mis_provincias[i]
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.provincia.length = 1
//coloco un guión en la única opción que he dejado
document.f1.provincia.options[0].value = "-"
document.f1.provincia.options[0].text = "-"
}
//marco como seleccionada la opción primera de provincia
document.f1.provincia.options[0].selected = true
}
</script>
Y con este codigo en el Body:
Cita:
<select name=provincia>
<option value="-" selected="selected">-
</select>
El usuario ahora tiene que seleccionar en el combo "provincia" la provincia a la que quiere ir y ahí es donde quiero que lo envie a la url correspondiente de la provincia (que no region) que seleccione.

No se si asi se me entendera...

Gracias de nuevo por tu ayuda desinteresada.
  #12 (permalink)  
Antiguo 19/10/2011, 14:05
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

en lugar de esto
Cita:
<select name=provincia>
<option value="-" selected="selected">-
</select>
esto
Cita:
<select name="provincia" onchange="alert(this.value)">
<option value="-" selected="selected">-
</select>
y una vez que te convezcas que es eso lo que te ocupa

cambia
Cita:
<select name="provincia" onchange="alert(this.value)">
por
Cita:
<select name="provincia" onchange="window.location.href='http//www.' + this.value + '.html'">
  #13 (permalink)  
Antiguo 19/10/2011, 14:58
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

Vamos a ver, efectivamente tengo puesto hace rato esto.

Cita:
<select name="provincia" onchange="window.location.href='http//www.' + this.value + '.html'">
Y eso me tira, por ejemplo si elijo la provincia Almería, a esta url:

http.//www.Almería.html.

Pero yo lo que quiero es que me lleve a esta url:

http://www.veletaweb.org/mevoycontigo/foro/index.php?board=2.0

Como le digo yo que cuando se seleccione Almería me lleve hasta esa url? y cuando sea Granada que me lleve a esta:

http://www.veletaweb.org/mevoycontigo/foro/index.php?board=5.0

Y asi sucesivamente con todas las provincias españolas...

Pongo aqui el codigo completo de la pagina con el formulario de seleccion por si te sirve o ves alguna solucion...

Cita:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script language="JavaScript">
var provincias_1=new Array("Selecciona provincia","Almería","Cádiz","Córdoba","Granada"," Huelva","Jaén","Málaga","Sevilla")
var provincias_2=new Array("Selecciona provincia","Huesca","Teruel","Zaragoza")
var provincias_3=new Array("Selecciona provincia","El Hierro","Fuerteventura","Gran Canaria","La Gomera","La Palma","Lanzarote","Tenerife")
var provincias_4=new Array("Selecciona provincia","Cantabria/Santander")
var provincias_5=new Array("Selecciona provincia","Avila","Burgos","León","Palencia","Sal amanca","Segovia","Soria","Valladolid","Zamora")
var provincias_6=new Array("Selecciona provincia","Albacete","Ciudad Real","Cuenca","Guadalajara","Toledo")
var provincias_7=new Array("Selecciona provincia","Barcelona","Girona","Lleida","Tarragon a")
var provincias_8=new Array("Selecciona provincia","Ceuta y Melilla")
var provincias_9=new Array("Selecciona provincia","Madrid")
var provincias_10=new Array("Selecciona provincia","Navarra/Pamplona")
var provincias_11=new Array("Selecciona provincia","Alicante","Castellón","Valencia")
var provincias_12=new Array("Selecciona provincia","Badajoz","Cáceres")
var provincias_13=new Array("Selecciona provincia","La Coruña","Lugo","Orense","Pontevedra")
var provincias_14=new Array("Selecciona provincia","Formentera","Ibiza","Mallorca","Menorc a")
var provincias_15=new Array("Selecciona provincia","La Rioja/Logroño")
var provincias_16=new Array("Selecciona provincia","Alava","Guipúzcoa","Vizcaya")
var provincias_17=new Array("Selecciona provincia","Asturias/Oviedo")
var provincias_18=new Array("Selecciona provincia","Murcia")

function cambia_provincia(){
//tomo el valor del select de la Region elegida
var Region
Region = document.f1.Region[document.f1.Region.selectedIndex].value
//miro a ver si la region está definida
if (Region != 0) {
//si estaba definida, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=eval("provincias_" + Region)
//calculo el numero de provincias
num_provincias = mis_provincias.length
//marco el número de provincias en el select
document.f1.provincia.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.provincia.options[i].value=mis_provincias[i]
document.f1.provincia.options[i].text=mis_provincias[i]
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.provincia.length = 1
//coloco un guión en la única opción que he dejado
document.f1.provincia.options[0].value = "-"
document.f1.provincia.options[0].text = "-"

}
//marco como seleccionada la opción primera de provincia
document.f1.provincia.options[0].selected = true
}
</script>
</head>

<body>
<table width="68%" height="26" border="0" align="right" style="padding-right:9px; cellpadding="0" cellspacing="0">
<tr>
<td width="401" height="26" bgcolor="#FFFFFF"><form id="f1" name="f1" method="post" action="">
<div align="center">
<select name=Region onchange="cambia_provincia()">
<option value="0" selected="selected">Selecciona comunidad</option>
<option value="1">Andaluc&iacute;a</option>
<option value="2">Arag&oacute;n</option>
<option value="3">Canarias</option>
<option value="4">Cantabria</option>
<option value="5">Castilla y Le&oacute;n</option>
<option value="6">Castilla la Mancha</option>
<option value="7">Catalu&ntilde;a</option>
<option value="8">Ciudades aut&oacute;nomas</option>
<option value="9">Comunidad de Madrid</option>
<option value="10">Comunidad de Navarra</option>
<option value="11">Comunidad Valenciana</option>
<option value="12">Extremadura</option>
<option value="13">Galicia</option>
<option value="14">Islas Baleares</option>
<option value="15">La Rioja</option>
<option value="16">Pais Vasco</option>
<option value="17">Principado de Asturias</option>
<option value="18">Region de Murcia</option>
</select>
<select name=provincia onchange="window.location.href='http.//www.' + this.value + '.html'">
<option value="-" selected="selected">-
</select>
<input type="submit" name="Submit" value="Enviar" />
</div>
</form></td>
<td width="150" bgcolor="#FFFFFF"><div align="center">Selecciona tu destino</div></td>
</tr>
</table>
</body>
</html>
No tengo palabras para agradecer tu paciencia.

Saludos.
  #14 (permalink)  
Antiguo 20/10/2011, 05:53
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

por aquí no abundan los adivinos

el combo provincia se genera así
Cita:
<option selected="selected" value="Selecciona provincia">Selecciona provincia</option>
<option value="Almería">Almería</option>
<option value="Cádiz">Cádiz</option>
<option value="Córdoba">Córdoba</option>
<option value="Granada">Granada</option>
<option value=" Huelva"> Huelva</option>
<option value="Jaén">Jaén</option>
<option value="Málaga">Málaga</option>
<option value="Sevilla">Sevilla</option>
pero al parecer no necesitas obtener el nombre de la provincia, sino el array en el que está y la posición que ocupa en dicho array. de cualquier modo, has de hacer lo que te vengo indicando en los últimos post

ahora veamos como se accede a los elementos de un array. por ejemplo de este
Cita:
var arr = ["Selecciona provincia","Almería","Cádiz","Córdoba"]
un array empieza en la posición 0 hasta n. no en la posición 1. por tanto
Cita:
posición 0 ---> Seleccionar provincia
posición 1 ---> Almería
posición 2 ---> Cádiz
posición 3 ---> Córdoba
como ves Almería no es posición 2, como tu dices, sino 1

bien, para no alargarme más, te dejos los cambios que has de hacer. hay una manera igual/más de sencilla de solucionar el problema, pero bastante mas ardua, aunque más correcta

Cita:
function cambia_provincia(prov){
//tomo el valor del select de la Region elegida
var Region =prov;
//miro a ver si la region está definida
if (Region != 0) {
//si estaba definida, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias= window["provincias_" + Region];
//calculo el numero de provincias
num_provincias = mis_provincias.length;
//marco el número de provincias en el select
document.f1.provincia.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.provincia.options[i].value= parseInt(i+1) +'.'+parseInt(Region-1);
document.f1.provincia.options[i].text=mis_provincias[i];
}


<select name=Region onchange="cambia_provincia(this.value)">

<select name=provincia onchange="window.location.href='http://www.veletaweb.org/mevoycontigo/foro/index.php?board=' + this.value">
  #15 (permalink)  
Antiguo 20/10/2011, 07:17
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

Hola IsabelM, he realizado los cambios que me has comentado y ahora tengo el codigo tal que asi:

Cita:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script language="JavaScript">
var provincias_1=new Array("Selecciona provincia","Almería","Cádiz","Córdoba","Granada"," Huelva","Jaén","Málaga","Sevilla")
var provincias_2=new Array("Selecciona provincia","Huesca","Teruel","Zaragoza")
var provincias_3=new Array("Selecciona provincia","El Hierro","Fuerteventura","Gran Canaria","La Gomera","La Palma","Lanzarote","Tenerife")
var provincias_4=new Array("Selecciona provincia","Cantabria/Santander")
var provincias_5=new Array("Selecciona provincia","Avila","Burgos","León","Palencia","Sal amanca","Segovia","Soria","Valladolid","Zamora")
var provincias_6=new Array("Selecciona provincia","Albacete","Ciudad Real","Cuenca","Guadalajara","Toledo")
var provincias_7=new Array("Selecciona provincia","Barcelona","Girona","Lleida","Tarragon a")
var provincias_8=new Array("Selecciona provincia","Ceuta y Melilla")
var provincias_9=new Array("Selecciona provincia","Madrid")
var provincias_10=new Array("Selecciona provincia","Navarra/Pamplona")
var provincias_11=new Array("Selecciona provincia","Alicante","Castellón","Valencia")
var provincias_12=new Array("Selecciona provincia","Badajoz","Cáceres")
var provincias_13=new Array("Selecciona provincia","La Coruña","Lugo","Orense","Pontevedra")
var provincias_14=new Array("Selecciona provincia","Formentera","Ibiza","Mallorca","Menorc a")
var provincias_15=new Array("Selecciona provincia","La Rioja/Logroño")
var provincias_16=new Array("Selecciona provincia","Alava","Guipúzcoa","Vizcaya")
var provincias_17=new Array("Selecciona provincia","Asturias/Oviedo")
var provincias_18=new Array("Selecciona provincia","Murcia")

function cambia_provincia(prov){
//tomo el valor del select del pais elegido
var Region=prov;

//miro a ver si el pais está definido
if (Region != 0) {
//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=window("provincias_" + Region);
//calculo el numero de provincias
num_provincias = mis_provincias.length;
//marco el número de provincias en el select
document.f1.provincia.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.provincia.options[i].value= parseInt(i+1) +'.'+parseInt(Region-1);
document.f1.provincia.options[i].text=mis_provincias[i];
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.provincia.length = 1
//coloco un guión en la única opción que he dejado
document.f1.provincia.options[0].value = "-"
document.f1.provincia.options[0].text = "-"

}
//marco como seleccionada la opción primera de provincia
document.f1.provincia.options[0].selected = true
}
</script>
</head>

<body>
<table width="68%" height="26" border="0" align="right" style="padding-right:9px; cellpadding="0" cellspacing="0">
<tr>
<td width="401" height="26" bgcolor="#FFFFFF"><form id="f1" name="f1" method="post" action="">
<div align="center">
<select name=Region onchange="cambia_provincia(this.value)">
<option value="0" selected="selected">Selecciona comunidad</option>
<option value="1">Andaluc&iacute;a</option>
<option value="2">Arag&oacute;n</option>
<option value="3">Canarias</option>
<option value="4">Cantabria</option>
<option value="5">Castilla y Le&oacute;n</option>
<option value="6">Castilla la Mancha</option>
<option value="7">Catalu&ntilde;a</option>
<option value="8">Ciudades aut&oacute;nomas</option>
<option value="9">Comunidad de Madrid</option>
<option value="10">Comunidad de Navarra</option>
<option value="11">Comunidad Valenciana</option>
<option value="12">Extremadura</option>
<option value="13">Galicia</option>
<option value="14">Islas Baleares</option>
<option value="15">La Rioja</option>
<option value="16">Pais Vasco</option>
<option value="17">Principado de Asturias</option>
<option value="18">Region de Murcia</option>
</select>
<select name=provincia onchange="window.location.href='http://www.veletaweb.org/mevoycontigo/foro/index.php?board=' + this.value">
<option value="-" selected="selected">-
</select>
<input type="submit" name="Submit" value="Enviar" />
</div>
</form></td>
<td width="150" bgcolor="#FFFFFF"><div align="center">Selecciona tu destino</div></td>
</tr>
</table>
</body>
</html>
Siento mucho tener que darte tanto el coñazo pero esque poniendolo asi no me realiza la carga de las provincias en el combo provincias al seleccionar la region...
  #16 (permalink)  
Antiguo 20/10/2011, 07:42
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

Bien vamos avanzando gracias tu ayuda y paciencia, ya he conseguido que me cargue el combo provincias y que al seleccionar una provincia de la region Andalucia me lleve a su url sin problema, esto ya tiene otra pinta!! jeje

Ahora bien, el problema me viene al seleccionar otra provincia de otra region, por ejemplo de la region Aragon si selecciono Huesca me lleva a la url de Almeria y creo que es por que las dos tendrian un mismo value 1, y en cambio en el foro la seccion de Huesca seria la 10 no la 1... por ahi creo que van los tiros ahora... javascript realiza una carga de provincias para cada region seleccionada y todas las cargas tendrian los value en el mismo orden, o sea todas las regiones tendran una provincia con value=1, value=2 etc...

Seguire haciendo pruebas.... muchisimas gracias!!

Saludos.
  #17 (permalink)  
Antiguo 20/10/2011, 12:31
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

la variable que pasa es la correcta. el problema lo tienes a la hora de recoger esa variable, es decir nada que ver con javascript

por cierto el código tal y como te le dejé funciona "perfectamente. qué has cambiado??
  #18 (permalink)  
Antiguo 20/10/2011, 13:43
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

Hola IsabelM, te pongo aqui el codigo que tengo puesto ahora, con el que me funciona perfecto tanto la carga de provincias en el combo provincias como el envio a la url de las provincias de Andalucia:

Cita:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script language="JavaScript">
var provincias_1=new Array("Selecciona provincia","Almería","Cádiz","Córdoba","Granada"," Huelva","Jaén","Málaga","Sevilla")
var provincias_2=new Array("Selecciona provincia","Huesca","Teruel","Zaragoza")
var provincias_3=new Array("Selecciona provincia","El Hierro","Fuerteventura","Gran Canaria","La Gomera","La Palma","Lanzarote","Tenerife")
var provincias_4=new Array("Selecciona provincia","Cantabria/Santander")
var provincias_5=new Array("Selecciona provincia","Avila","Burgos","León","Palencia","Sal amanca","Segovia","Soria","Valladolid","Zamora")
var provincias_6=new Array("Selecciona provincia","Albacete","Ciudad Real","Cuenca","Guadalajara","Toledo")
var provincias_7=new Array("Selecciona provincia","Barcelona","Girona","Lleida","Tarragon a")
var provincias_8=new Array("Selecciona provincia","Ceuta y Melilla")
var provincias_9=new Array("Selecciona provincia","Madrid")
var provincias_10=new Array("Selecciona provincia","Navarra/Pamplona")
var provincias_11=new Array("Selecciona provincia","Alicante","Castellón","Valencia")
var provincias_12=new Array("Selecciona provincia","Badajoz","Cáceres")
var provincias_13=new Array("Selecciona provincia","La Coruña","Lugo","Orense","Pontevedra")
var provincias_14=new Array("Selecciona provincia","Formentera","Ibiza","Mallorca","Menorc a")
var provincias_15=new Array("Selecciona provincia","La Rioja/Logroño")
var provincias_16=new Array("Selecciona provincia","Alava","Guipúzcoa","Vizcaya")
var provincias_17=new Array("Selecciona provincia","Asturias/Oviedo")
var provincias_18=new Array("Selecciona provincia","Murcia")

function cambia_provincia(){
//tomo el valor del select de la Region elegida
var Region
Region = document.f1.Region[document.f1.Region.selectedIndex].value
//miro a ver si la region está definida
if (Region != 0) {
//si estaba definida, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=eval("provincias_" + Region)
//calculo el numero de provincias
num_provincias = mis_provincias.length
//marco el número de provincias en el select
document.f1.provincia.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.provincia.options[i].value= parseInt(i+1) +'.'+parseInt(Region-1);
document.f1.provincia.options[i].text=mis_provincias[i];
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.provincia.length = 1
//coloco un guión en la única opción que he dejado
document.f1.provincia.options[0].value = "-"
document.f1.provincia.options[0].text = "-"

}
//marco como seleccionada la opción primera de provincia
document.f1.provincia.options[0].selected = true
}
</script>
</head>

<body>
<table width="68%" height="26" border="0" align="right" style="padding-right:9px; cellpadding="0" cellspacing="0">
<tr>
<td width="401" height="26" bgcolor="#FFFFFF"><form id="f1" name="f1" method="post" action="">
<div align="center">
<select name=Region onchange="cambia_provincia()">
<option value="0" selected="selected">Selecciona comunidad</option>
<option value="1">Andaluc&iacute;a</option>
<option value="2">Arag&oacute;n</option>
<option value="3">Canarias</option>
<option value="4">Cantabria</option>
<option value="5">Castilla y Le&oacute;n</option>
<option value="6">Castilla la Mancha</option>
<option value="7">Catalu&ntilde;a</option>
<option value="8">Ciudades aut&oacute;nomas</option>
<option value="9">Comunidad de Madrid</option>
<option value="10">Comunidad de Navarra</option>
<option value="11">Comunidad Valenciana</option>
<option value="12">Extremadura</option>
<option value="13">Galicia</option>
<option value="14">Islas Baleares</option>
<option value="15">La Rioja</option>
<option value="16">Pais Vasco</option>
<option value="17">Principado de Asturias</option>
<option value="18">Region de Murcia</option>
</select>
<select name=provincia onchange="window.location.href='http://www.veletaweb.org/mevoycontigo/foro/index.php?board=' + this.value">
<option value="-" selected="selected">-
</select>
<input type="submit" name="Submit" value="Enviar" />
</div>
</form></td>
<td width="150" bgcolor="#FFFFFF"><div align="center">Selecciona tu destino</div></td>
</tr>
</table>
</body>
</html>
Creo que el problema estaba en esta linea:

Cita:
mis_provincias=eval("provincias_" + Region)
Si pongo window en lugar de eval no me realiza la carga de las provincias...


Pues creo que de codigo javascript esta ok, ahora el problema esta como tu dices al recoger la variable, ire haciendo pruebas en los id_board del foro de destino hasta que de con la tecla...

Agradecido eternamente por tu paciencia y ayuda.

Saludos.
  #19 (permalink)  
Antiguo 20/10/2011, 14:33
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enlaces en formulario.

estás hablando del acceso a variables dinámicas usando el objeto window. ese no es el problema. el problema es usar eval()

Cita:
Don't use eval!

eval() is a dangerous function, which executes the code it's passed with the privileges of the caller. If you run eval() with a string that could be affected by a malicious party, you may end up running malicious code on the user's machine with the permissions of your webpage / extension. More importantly, third party code can see the scope in which eval() was invoked, which can lead to possible attacks in ways of which the similar Function is not susceptible.

eval() is also generally slower than the alternatives, since it has to invoke the JS interpreter, while many other constructs are optimized by modern JS engines.
leer mas
  #20 (permalink)  
Antiguo 21/10/2011, 10:13
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Enlaces en formulario.

Hola IsabelM, yo no soy informatico, ni profesional de esto ni nada por el estilo, lo mio es simplemente hooby, aficionado de los malos mas bien jejeje, por lo que no te sabria dar una explicacion y ademas el enlace que me pones, para mas inri, esta todo en ingles, idioma que yo por desgracia, no domino absolutamente nada...

Dicho hecho solo te puedo decir que, despues de hacer muchas pruebas del tipo borro esto y a ver que pasa...., si yo cambio en el codigo la palabra eval por la palabra window no me funciona la carga dinamica del combo provincias, en cambio si dejo la palabra eval si que funciona la carga dinamica perfectamente...

Saludos.

Etiquetas: enlaces, formulario, funcion, html, botones
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:45.