![]() |
Rareza en Internet Explorer al enviar un formulario
Hola,
Acaba de informarme nuestro amigo Jhonny sobre un problema en cierto proyecto que me traigo entre manos. Dicho problema resulta ser muy curioso, pues sólo se da en Internet Explorer, no así en Opera, Safari ni Firefox, y, sólo se da además si las cosas se hacen de cierto modo. A ver si un poco de código aclara el asunto, luego explicaré qué se supone que hay que hacer para probar dicho código: Código PHP:
Pues bien, si el formulario se envía mediante el botón, haciendo clic en el botón, este se procesa como se espera, y todo va bien en los cuatro navegadores mencionados. Pero, si se opta por usar la tecla "ENTER", cuando se ha escrito algo (o sin escribir) en la casilla de texto, entonces Internet Explorer "falla". Al menos se comporta distinto al resto de navegadores. Efectivamente, el resto de navegadores envían junto al formulario la variable "submit", se pulse sobre el botón o se utilice la tecla "ENTER", pero, Internet Explorer sólo sabe de la variable "submit" si se hace uso del botón para enviar el formulario. Ahora bien, ¿qué es lo que puede estar pasando? Gracias de antemano por cualquier tipo de sugerencia. ;) |
Hola,
Más rarezas todavía... y es que resulta que esto sí funciona también en Internet Explorer, pulsando el botón o usando la tecla "ENTER": Código PHP:
|
Hola,
Como se ve en mi anterior mensaje, añadiendo una casilla más, Internet Explorer se comporta ya como se espera, sin embargo, no basta cualquier "casilla"... por ejemplo, si añadimos un campo "oculto" al formulario, Internet Explorer sigue sin funcionar como se espera y funcionan el resto de navegadores en que he probado. :confused: :confused: |
Yo creo que la respuesta es simple:
Cuando un navegador va a enviar un formulario utiliza un bucle para obtener la información de todos campos de dicho formulario. Lo que ocurre es que los programadores de Microsoft son los mejores del mundo y por eso decidieron optimizarlo. Primero comprueba el número de campos del formulario y si este sólo tiene un campo pues genera la petición directamente con su valor y no utilizando el bucle. El problema es que alguien olvidó que el botón "submit" también es un campo... Esa es mi teoría. Claro que como no puedo consultar el código fuente no puedo asegurarlo... (¡Zas! :D) |
Hola,
Sí; algo así debe ser como lo que dices Ñuño. Y a ver qué se puede hacer,... porque no es sencillla una solución, puesto que no vamos a añadir un campo que no se necesita en un formulario... y además sabiendo como sabemos que todo va bien en el resto de navegadores en que se prueba la aplicación. Lo malo es que no hablamos de Internet Explorer 6, sino de Internet Explorer 7 y hasta la versión 8. Igual es cuestión de seguir investigando, pues lo cierto es que es algo que puede resultar molesto y desconcertante para los usuarios de Internet Explorer toparse con un formulario así. |
El problema no es de bucle, sino que el evento onclick del botón no se ejecuta en esas condiciones en IE. Como saben, un "campo" submit no se envía al servidor, a menos que se oprima, lo cual es lógico para saber con cuál se envía el formulario en caso de que hubiere varios.
Por ejemplo, Código:
<form method="post" action="./testform.php"> Pero si presionamos el botón "buscar" o presionamos ENTER, entonces sí que llega el campo y se ejecuta el onclick (excepto, claro, en IE con un sólo cuadro, como ya vieron). O sea que, al parecer, el oprimir ENTER genera el evento onclick del botón por default, excepto en el caso indicado. Por otra parte, pregunto por curiosidad, ¿por qué necesitas saber el botón que envia? Esto es, el otro campo sí se envía y se podría efectuar la búsqueda. // Saludos |
Saludos foreros.
Tengo el mismo problema con internet explorer, estoy programando en D2007 y tengo un servidor con el componente TIdHTTPServer que envía texto HTML al navegador para recoger tan sólo dos datos: nombre y apellido. Para probar que los recibo bien al pulsar el boton ENVIAR refresco la pagina y muestro el texto "Hola nombre apellido". Sencillo pero en iexplorer no funciona (en mozilla o chrome sí). Os dejo esa parte del código a ver si veis algo mal o si no alguna forma habrá para que funcione en todos los navegadores. Disculpad pero seguramente el código no sea de lo mejorcito, soy estudiante y estoy empezando. Código:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; Muchas gracias por adelantado Un saludo. |
Hola,
Se me pasó este hilo... Román, en realidad sí que podría omitirse el botón, es decir, mirar sólo la "query" y realizar la búsqueda correspondiente. Esto es algún lío mío que tengo por ahí: la costumbre de hacerlo así también en otros formularios... quizá debiera revisarlo. Aunque, parece que sólo "falla" en Internet Explorer... :( |
La franja horaria es GMT +2. Ahora son las 08:57:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi