problemas validación formulario javascript
3 seguidores
Hola,
estoy haciendo mis primeros pinitos con javascript, y me encuentro con un problema. Hago un formulario donde javascript se ocupa de enviar mensajes (alert) si algún campo esta vacío y cosas así, hasta aquí bien. El problema viene en que cuando sale el alert y le das aceptar, llamá al php en vez de quedarse en la página. No se como arreglarlo para que solo llame al php una vez este todo ok pensaba que para eso estaba el return false. De antemano muchísimas gracias por vuestro tiempo
html
http://pastebin.com/X3qJXAKf
javascript
http://pastebin.com/ii65fJ3T
cbp
phpninja
y perdona, pero si te pasa a veces es porque no lo haces bien (o un bug muy gordo del navegador). bien hecho es una función básica de JavaScript que no da error.
cbp
Pedro-Xitrus
esta estadística sí que me gustaría saber de dónde sale ¿así, en general? ¿o depende del tipo de sitio y por tanto del tipo de target al que vaya dirigido? que estoy de acuerdo con vosotros en que el button es una elección, pero tampoco entiendo de qué me queréis convencer ¿por qué poner el button pudiendo poner el submit?
cbp
phpninja
a ver, no digo que no se pueda, pero lo de que es más puro no es discutible. el botón submit se inventó para enviar formularios. y si utilizamos el HTML correctamente, eligiendo cada etiqueta y cada atributo para la función que le corresponde, la elección correcta es el submit ¿que se puede hacer con button? por supuesto, pero necesitas JavaScript. ahí tienes la falta de pureza de tu elección.
Pedro Gutierrez
Yo solo digo que JavaScript esta habilitado en el 99,6% de los navegadores... vamos, que no te va a pasar nada porque pongas el button
phpninja
Yo sólo digo a veces. I además creo que no hay una sola forma de hacer las cosas.
La premisa de que utilizar type submit en vez de type button, es más puro, no sé tampoco de donde la sacas.
cbp
pues llevo años haciéndolo así en multitud de ocasiones y jamás me ha dado un problema si se hace bien. ni con Firefox ni con ningún navegador. es exactamente el mismo efecto que consigues con preventDefault.
phpninja
En firefox, estos return false; (a veces) acaban en pantalla blanca con return false;
O usas this.preventDefault(); en vez de return false, o button en type.
cbp
es que estoy pensando que, si lo pones como tipo button y el usuario no tiene JavaScript habilitado, no puede enviar el formulario. con la solución que he comentado más arriba sí podría.
cbp
o bien dejarlo como submit y abortar el comportamiento por defecto del formulario con un "return false". a mí me gusta más esta última ya que dejas el elemento en el HTML como lo que es, un botón para enviar el formulario, y es desde JavaScript donde intervienes para evitar que se envíe. el resultado es el mismo, pero desde un punto de visto teórico es una solución más pura.
Pedro Gutierrez
El problema es que el botón que lo manda es del tipo submit, y lo manda automáticamente tras pulsarlo.
Tienes que ponerlo con el type=button y depués mandarlo desde JavaScript