Foros del Web » Programando para Internet » Javascript »

Problema con this.form.action() no sirve en IE8

Estas en el tema de Problema con this.form.action() no sirve en IE8 en el foro de Javascript en Foros del Web. Hola gente. Bueno asi esta la cosa: Estoy construyendo un sito web con php y smarty. Decidí hacer una opción de idioma bonita (ustedes saben.. ...
  #1 (permalink)  
Antiguo 21/10/2009, 08:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 14 años, 7 meses
Puntos: 0
Problema con this.form.action() no sirve en IE8

Hola gente. Bueno asi esta la cosa:

Estoy construyendo un sito web con php y smarty. Decidí hacer una opción de idioma bonita (ustedes saben.. en vez de un /es o /en en la url, que se cargue ya sea un idioma u otro en la plantilla). Para este fin decidí utiizar un form con select con las opciones de inglés y de español utilizando POST. Lo probé y funcionó perfectamente . Hasta aquí todo bien. El problema es que el sitio lo pruebo en mozilla firefox porque en el trabajo breteo en mac. Sin embargo por supuesto en mi casa siempre pruebo el sitio en IE, en este caso la version 8 (gracias Microsoft por facilitarle tanto la vida a los desarrolladores ) para ver en que me va a llorar y ahi esta el problema. EN IE 8 el Post que mando no se carga... al principio crei que podia ser un problema con las sessiones o con el POST... que se yo, asi que empecé a probar y probar hasta que llegue al problema: this.form.action().

El siguiente codigo:

Código HTML:
<form action="index.php" method="POST" >

    <select name="OS">
        <option value="Windows" onClick="this.form.submit(), this.form.action= 'index.php'">Windows</option>
        <option value="Macintosh" onClick="this.form.submit(), this.form.action= 'index.php'">Macintosh</option>
        <option value="UNIX" onClick="this.form.submit(), this.form.action= 'index.php'">UNIX</option>
        <option value="Amiga" onClick="this.form.submit(), this.form.action= 'index.php'">Amiga</option>
        <option value="Next" onClick="this.form.submit(), this.form.action= 'index.php'">Next</option>
        <option value="Apple" onClick="this.form.submit(), this.form.action= 'index.php'">Apple</option>
     </select> 
     
<!-- <input type="submit" />  -->
</form> 
 
     
<?php
echo "you have selected ".$_POST["OS"]." from the list";
?> 
lo utilice para probar la cosa, como pueden ver es un simple select que me despliega la opcion marcada. Lo que pasa es que este codigo si se corre en firefox me funciona, pero si lo hago en IE 8, o peor aún, como acabo de descubrir... en Safari. No me sirve!!, y es el mismo código!.

Ahora bien si en vez de this.form.submit() empleo un <input type="submit" /> en tonces si me sirve, asi que el problema debe de estar en esa funcion en particular. Pero necesito utlizarla porque hacer un botón submit de mas por eso se ve feo..

En fin ese es mi atolladero. Quería saber si pueden decirme si estoy cometiedno algun error o si IE o Safari necesitan una instrucción adicional o algo de al configuración para que esta función (que tengo entendido es javascript) me sirva.

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 21/10/2009, 09:06
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema con this.form.action() no sirve en IE8

respecto al boton submit, te diria que lo mires de otra forma. ¿que pasaria si el usuario no tiene javascript? ¿como va enviar esa informacion? por lo que el boton submit realmente no esta de mas. por otro lado, si bien recuerdo uno que otro navegador no envia la informacion si el boton submit no esta presente, no recuerdo cual de ellos era o si realmente era asi.

respecto al script, por alguna razon no todos los navegadores admiten eventos en los elementos OPTONs. lo correcto es usar onchange en SELECT.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 21/10/2009, 09:29
 
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con this.form.action() no sirve en IE8

onchange en firefox lo habia probado y no funciona... tampoco en Safari...

En cuanto a lo que me decias sobre el submit... pues si tienes razon, estéticamente un botón de más pues se veria feo la verdad.. pero si permitiria funcionalidad independietemente de si hay o no Javascript aunque sobre ese particular no se si eso es muy frecuente la verdad (que alguien no use javascript pues no lo veo como algo muy frecuente, corrijamen si me equivoco).

Igual, sigo sin comprender porque no funciona esa cosa en IE y Safari. No sabe si existe otra forma de hacer un select autmatico (con solo seleccionar) sin tener que usar el this.form.action()???
  #4 (permalink)  
Antiguo 21/10/2009, 09:41
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema con this.form.action() no sirve en IE8

seguramente habras aplicado mal el evento onchange, te lo aseguro porque siempre ha funcionado.

acerca del submit, pues quizas sea vea esteticamente mal, eso te lo acepto. aun asi no creo que eso justifique la decision de quitar el boton. por ejemplo yo, aunque javascript es mi lenguaje favorito, van mas de un año que navego por la web con javascript inhabilitado. y estoy seguro que no soy la unica persona con este mismo perfil. ahora bien, hay una solucion. con el mismo javascript eleminar el submit. de modo que un usuario con javascript no verá el boton mientras que un usuario sin javascript lo verá. de esa forma no interfieres con las preferencias del usuario. para remover el submit, simplemente necesitas interactuar con el DOM.

por ultimo, para enviar un formulario automaticamente, por obligacion es necesario invocar el metodo submit como lo has estado haciendo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 21/10/2009, 10:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con this.form.action() no sirve en IE8

Hola:

Confirmando lo que comenta zerokilled onchange funciona en todos los navegadores, y sobre un botón submit... si te importa mucho la estética, puedes encerrarlo en unas etiquetars noscript.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 21/10/2009, 10:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema con this.form.action() no sirve en IE8

Cita:
Iniciado por caricatos Ver Mensaje
si te importa mucho la estética, puedes encerrarlo en unas etiquetars noscript.
jejeje, mejor solucion no puede haber!! gracias caricatos por asistir en el tema, ya se me habia olvidado que existe la etiqueta noscript.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
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 12:21.