Foros del Web » Programando para Internet » Javascript »

Error de validacion con SELECT

Estas en el tema de Error de validacion con SELECT en el foro de Javascript en Foros del Web. Hola a todos compañeros!! Me trae de cabeza un problema con un SELECT que muestra un listado de países, os explico un poco. Tengo un ...
  #1 (permalink)  
Antiguo 12/03/2010, 17:31
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Error de validacion con SELECT

Hola a todos compañeros!!



Me trae de cabeza un problema con un SELECT que muestra un listado de países, os explico un poco.


Tengo un fichero denominado países.js que contiene el array con todos los países (pego un pedacito):
var state = new Array("ESPAÑA","Afganistan","Islas Gland","Albania","Alemania","Andorra","Angola","An guilla");



El select lo implemento utilizando este código:


Código HTML:
<select name="paises" id="h1" class="contenedor">
           <script type="text/javascript">
		for(var hi=0; hi<state.length; hi++)
			document.write("<option value=\""+state[hi]+"\">"+state[hi]+"</option>");
            </script>
</select> 
Hasta aquí todo perfecto, funciona de escándalo. El problema es que cuando voy a validar este código en el W3C, el código js anterior tiene errores por todas partes. ¿Conocéis alguna forma de que imprima el contenido del array de países.js sin errores en estándar transitional?.


Gracias!!

Última edición por nolose; 12/03/2010 a las 17:39
  #2 (permalink)  
Antiguo 12/03/2010, 20:33
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

Tenes innerHTML y appendChild.. la mas simple es innerHTML, aunque es fea esteticamente :P

saludos
  #3 (permalink)  
Antiguo 13/03/2010, 07:25
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

que hacen exactamente esas funciones??
  #4 (permalink)  
Antiguo 13/03/2010, 13:30
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

Insertan nodos o contenido HTML dentro del codigo, por ejemplo...

Código Javascript:
Ver original
  1. var h=document.getElementById("h1");
  2. for(var hi=0; hi<state.length; hi++)
  3.    h.innerHTML+='<option value="'+state[hi]+'">'+state[hi]+'</option>";
  #5 (permalink)  
Antiguo 15/03/2010, 11:32
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

he estado estos dias investigando sobre el codigo que me pasaste y la verdad es que funciona muy bien, he sustituido el codigo que me pasaste y he reducido el número de errores de 60 a sólo 16 !!.

Solo me sigue fallanado el dichoso state.length

He estado intentando localizarlo en google estos dias para no dar más la lata pero no lo encuentro :(

Sabes como debería de ponerlo??

Actualmente:

Código HTML:
Ver original
  1. <select name="paises" id="h1" class="contenedor">
  2.            <script type="text/javascript">
  3.         var h=document.getElementById("h1");
  4.             for(var hi=0; hi<state.length; hi++)
  5.         h.innerHTML+='<option value="'+state[hi]+'">'+state[hi]+'</option>';
  6.            </script>
  #6 (permalink)  
Antiguo 15/03/2010, 11:48
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

mostra donde definis state
  #7 (permalink)  
Antiguo 15/03/2010, 11:57
Avatar de sublime_style  
Fecha de Ingreso: junio-2008
Mensajes: 69
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Error de validacion con SELECT

Mira el codigo esta bien, yo en mi caso usaria appendchild en vez de innerHTML pero no deberia cambiarte mucho, el tema de innerHTML es que no es un estandar es propietario de microsoft.
Quizas eso te este dando problemas al validar.

Otra cosa que puedes hacer para evadir usar el for para iterar es usar each de Jquery si puedes y quieres usar el framework y de paso aprovechas las funcionalidades para insertar los elementos al dom
  #8 (permalink)  
Antiguo 15/03/2010, 12:02
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

var state = new Array("ESPAÑA","Afganistan","Islas Gland","Albania","Alemania","Andorra","Angola","An guilla");
  #9 (permalink)  
Antiguo 15/03/2010, 12:53
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

innerHTML anda, o sea, la funcion es independiente de la variable, si hay error de codigo es otra cosa.. no tiene nada que ver que le pongas o no una variable a innerHTML, asi como es appendChild o innerHTML, si el error esta en el codigo va a ser lo mismo, innerHTML no tendria porque tirarte error por mas que estes en IE o no(excepto si el navegador no te lo permite)..

estas verificando que el for se ejecute perfectamente?
  #10 (permalink)  
Antiguo 15/03/2010, 13:13
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

Si, el for funciona muy bien porque me lista todos los paises sin problema y el funcionamiento es correcto,

El problema viene cuando intento validar 3WC en Transitional, que muestra los siguientes errores:

# Error Line 80, Column 50: character ";" not allowed in attribute specification list

for(var hi=0; hi<state.length; hi++)


# Error Line 80, Column 50: element "state.length" undefined

for(var hi=0; hi<state.length; hi++)



Imagino que el fallo se encuentra en la instrucción, state.length, que no es estándar y me obliga a utilizar el famoso innerHTML o algo similar... (no creo q sea el ; aunque marque eso )


Alguna idea¿??? gracias por todo!!
  #11 (permalink)  
Antiguo 15/03/2010, 13:51
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

puede ser que el error este antes del for pero te lo este marcando ahi
  #12 (permalink)  
Antiguo 15/03/2010, 14:21
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

¿podria ser por meter un <script> dentro del <select> ????
  #13 (permalink)  
Antiguo 15/03/2010, 14:50
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

no, me referia a un codigo de js anterior, no se, no veo error
  #14 (permalink)  
Antiguo 15/03/2010, 14:57
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

imposible... solo utilizo ese, tiene que haber algo mal en el hi<state.length;


Enfin seguire investigando... muchisimas gracias por tu ayuda!!! me han sido de muchisima utilidad tus consejos Fernando!
  #15 (permalink)  
Antiguo 15/03/2010, 16:12
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

Código Javascript:
Ver original
  1. var state = new Array("ESPAÑA","Afganistan","Islas Gland","Albania","Alemania","Andorra","Angola","An guilla");
  2.  
  3. function fill()
  4. {
  5.     var h=document.getElementById("h1");
  6.     for(var hi=0; hi<state.length; hi++)
  7.     {
  8.         var op=new Option(state[hi], state[hi]);
  9.         document.f0rm.paises.options[hi]=op;
  10.     }
  11. }

Código HTML:
Ver original
  1. <form name="f0rm">
  2.     <select name="paises" id="h1" class="contenedor">
  3.     </select>
  4. </form>
  #16 (permalink)  
Antiguo 15/03/2010, 16:24
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

he probado a ponerlo asi y no me carga los nombres del array, ¿no abria que llamar al la funcion fill?
  #17 (permalink)  
Antiguo 15/03/2010, 16:27
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

sip.. deberias....
  #18 (permalink)  
Antiguo 15/03/2010, 16:51
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

perfecto!!!!! todo validado a la perfeccion!.

Muchisimas gracias Fernando, publicaré si me das tu permiso esto en un blog para que otros puedan servirse de tu ayuda jejeje.

Creo que es un magnifico aporte, me sacaste de un apuro! mil gracias!
  #19 (permalink)  
Antiguo 15/03/2010, 17:04
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

si, no hay problema

saludos!
  #20 (permalink)  
Antiguo 15/03/2010, 17:26
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

pense que seria una chorrada pero no es tan chorrada xD,

me sigue dando un error al cerrar el </select> (que dice que no se cierra) :$:$



Line 61, Column 26: end tag for "select" which is not finished

</select>


Creo que es por el option?

Última edición por nolose; 15/03/2010 a las 17:44
  #21 (permalink)  
Antiguo 16/03/2010, 05:09
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

el new Option() lo valida correctamente el W3C??? esque tiene q ser eso el fallo :S:S:S


He probado a implementarlo en php... y va bien (mucho mas sencillo la verdad :$:$ pero claro... ya trabajariamos de parte de servidor y no buscamos eso)

Última edición por nolose; 16/03/2010 a las 05:41
  #22 (permalink)  
Antiguo 16/03/2010, 06:01
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

ERROR LOCALIZADO!

No se puede dejar el SELECT vacio... hay que meterle un option,

si le meto uno vacio...

<select name="paises" id="h1" class="contenedor" >
<option value=""></option>
</select>



Así funciona (lo valida bien el W3C) pero creo que es una chapuza... ¿qué opinan?
  #23 (permalink)  
Antiguo 16/03/2010, 06:06
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

que es una chapuza?
  #24 (permalink)  
Antiguo 16/03/2010, 08:25
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Error de validacion con SELECT

que el select lea los options del array de la funcion, y para que valide el W3C haya que poner un option vacio :S:S
  #25 (permalink)  
Antiguo 16/03/2010, 08:32
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Error de validacion con SELECT

se debe dar algun problema al tener un contenido NULL me imagino

saludos y suerte con eso

Etiquetas: select
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 13:21.