El maligno

CORREGIDO: Bueno, al final lo que comento aquí es cierto, me ha pasado, pero ha sido culpa mía. Los <form> que comento tienen un <select> con varias <option> y se me había olvidado cerrar los <select>. Corregido eso, todo funciona correctamente. Así que me castigaré a mi mismo a usar internet explorer durante un mes.

el maligno No recuerdo dónde leí a alguien que le daba este nombre, "el maligno" a internet explorer. Cualquiera que se haya peleado un poco con CSS y se haya preocupado de que su página web se vea bien en los distintos exploradores, estará de acuerdo en lo apropiado del nombre. De todos es conocida la manía de Microsoft de saltarse los estándares y de interpretarlos libremente, por decirlo de forma fina.

Pues no solo con CSS es el problema. Estoy haciendo una paginilla web para un amiguete y me he encontrado otro problema con los formularios <form>. No sé muy bien el motivo (aunque lo intuyo) y desde luego no funciona bien con internet explorer, pero sí con chrome y fifefox.

El problema es el siguiente. En una misma página index.php tengo varios formularios <form>, cada uno con campos distintos y cada uno con su propio botón de submit. Todos ellos hacen submit a la msma página index.php, menos el último de ellos que hace submit a otra página pedir.php

La primera diferencia de internet explorer ( versión 8 ) con los otros navegadores es que cuando pulso submit, la página receptora tiene acceso a todos los campos de todos los formularios en $_POST (uso method="post"), mientras que en firefox o chrome sólo tengo acceso a los datos del formulario sobre el que he pulsado el botón submit. Bueno, no me representa un especial problema porque como he comentado, todos los campos de los formularios son distintos, pero intuyo que puede ser un problema si hubiera campos con el mismo nombre en distintos formularios.

Y la segunda diferencia, esta sí más puñetera, es que el botón submit del último formulario, el que supuestamente reenvía a una página pedir.php, no lo hace. Ese submit en internet explorer envía a la misma página que todos los demás, index.php. En firefox y chrome funciona bien, cada submit envía a su página. Esto posiblemente está relacionado con el problema anterior. Es posible que si internet explorer considera los varios formularios <form> como un único mega-formulario, quizás no admita que varios <form> tengan atributos action distintos. No he probado a poner el action en cada submit concreto.

Este último problema lo he solucionarlo usando un poco de javascript

<input type="submit" onclick="this.form.action=’pedir.php’;this.form.submit()" …

que básicamente es decir cual es el action con javascript y no dejarle al internet explorer que lo interprete a su peculiar forma.

 

Esta entrada ha sido publicada en varios y etiquetada como , , , , . Guarda el enlace permanente.

5 respuestas a El maligno

  1. Pingback: Tweets that mention Diario de Programación » Blog Archive » El maligno -- Topsy.com

  2. completado dijo:

    ¿Has validado el código para comprobar que no haya alguna etiqueta mal cerrada? Lo digo porque Explorer puede tener algunos fallos y ,aunque este podría ser uno, me parace muy extraño y da la sensación de que toma un único formulario porque no está cerrado el primero antes de abrir el segundo. Firefox y Chrome muchas veces son capaces de «arreglar» un documento mal formado mejor que Explorer.

    Por otra parte te recomiendo que cuando quieras ejecutar un evento al enviar un formulario hagas en el onsubmit del form, en lugar del botón, ya que si envias el formulario pulsando por ejemplo «ENTER», el código que has puesto no se ejecutará.

    Un saludo.

  3. CAT Shannon dijo:

    He intentado reproducir el error que comentas y no lo he conseguido. He probado con este sencillo código http://pastebin.com/WLatkzd3 y la única forma en que he conseguido algo parecido ha sido «olvidando» alguna etiqueta de cierre de form. En cualquier caso funcionaba igual en todos los navegadores.
    ¿Usas algún DOCTYPE especial?

  4. CAT Shannon dijo:

    En mi comentario anterior se me ha olvidado señalar que incluso he forzado que los 3 formularios tuviesen mismo «name» y mismo «id». No cambiaba nada.

  5. Chuidiang dijo:

    He estado revisando y en los formularios hay un select con varias option. Se me ha olvidado cerrar los select. Voy a probar a ver y si es fallo mio (seguro), corregiré el post y me haré satánico 😉

    Gracias a todos por el interés.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.