Foros del Web » Programando para Internet » Javascript »

Validación de un campo y dos botones submit

Estas en el tema de Validación de un campo y dos botones submit en el foro de Javascript en Foros del Web. Hola de nuevo compañer@s llevo toda la tarde mirando esto por el foroe intentando conseguir hacerlo. Os cuento: Tengo un formulario con dos combobox (selecciona ...
  #1 (permalink)  
Antiguo 17/05/2011, 12:20
 
Fecha de Ingreso: mayo-2011
Ubicación: Jaén - [Andalucía]
Mensajes: 17
Antigüedad: 13 años
Puntos: 1
Validación de un campo y dos botones submit

Hola de nuevo compañer@s llevo toda la tarde mirando esto por el foroe intentando conseguir hacerlo. Os cuento:

Tengo un formulario con dos combobox (selecciona objetos, selecciona hora) y un textbox donde inserto la fecha, pues bien como se puede hacer para que cuando pulse en el botón del formulario "COMPROBAR" realice una select, y en el botón "ENVIAR" realice un insert. En otros temas que he leído por aquí los botones lo ponen de tipo <input type=submit> si lo hago de esa manera la función que tengo para la validación de la fecha (para que el usuario no inserte el campo vacío) automáticamente aunque le salga el aviso lo envia a la página que está en el action del <form></form>. ¿Cómo hacer que le salte un aviso y se quede en la misma ventana hasta que introduzca una fecha? si el tipo de botón lo tengo como <input type=button> porque de ésta manera si se queda en la misma ventana pero al enviar por el action del <form></form> no hace nada ni la select del botón COMPROBAR ni el insert del botón enviar y tengo puesto:

//FUNCIÓN PARA VALIDAR EL CAMPO DE LA FECHA NO SEA VACÍO Y QUE HAGA EL SUBMIT:

<script language="JavaScript" type="Text/JavaScript">
<!--

function validar()
{
dia=document.formu.fecha.value

if(dia=="")
{
alert("La fecha es incorrecta.");
document.formu.fecha.focus()
return false
}
window.document.formu.submit()
}
//-->
</script>


//COMPROBACIÓN EN LA PÁGINA DEL ACTION DEL <form></form>:

if(isset($_POST['comprobar'])) //<- Si pulsó en el botón comprobar...
{
//hacer la select
}
if(isset($_POST['enviar'])) //<- Si pulsó en el botón enviar....
{
//hacer el insert
}


De antemano muchas gracias (:
  #2 (permalink)  
Antiguo 17/05/2011, 15:01
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 19 años, 7 meses
Puntos: 9
Respuesta: Validación de un campo y dos botones submit

hola

En lugar de un input submit hazlo con button o con input button.(podrias igual hacerlo on submit pero es mas claro asi)

Incluye un campo hidden que cambia de estado segun el boton que oprimes.
Y creas una funcion que mueve el estado del hidden. (alternativa: mover el estado de hidden en la misma funcion validar)


function botonClick(accion){
document.formu.accion.value = accion;
validar();
}


<input type="button" name="b_comprobar" value="COMPROBAR" onclick="botonClick('comprobar')" />
<input type="button" name="b_enviar" value="Enviar" onclick="botonClick('enviar')" />

<input type="hidden" name="accion" id="accion" />


y en el php, pregunta por el campo hidden.


Saludos
  #3 (permalink)  
Antiguo 18/05/2011, 10:21
 
Fecha de Ingreso: mayo-2011
Ubicación: Jaén - [Andalucía]
Mensajes: 17
Antigüedad: 13 años
Puntos: 1
Respuesta: Validación de un campo y dos botones submit

Gracias sysmadryn, de momento hice la validación con php y compruebo si está vacío el campo fecha y alguna que otra más, si alguna vez me da problemas probaré con tu solución. :D
  #4 (permalink)  
Antiguo 18/05/2011, 11:02
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: Validación de un campo y dos botones submit

Hola:

Los botones para envío deben ser siempre del tipo submit, y en las validaciones se debe devolver false para su cancelación... y en el servidor, si son 2 botones, pueden tener el mismo nombre (name), pero el valor que llega es el del botón que se pulsa.

Más info: El abc de los formularios.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 18/05/2011, 14:37
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 19 años, 7 meses
Puntos: 9
Respuesta: Validación de un campo y dos botones submit

En realidad puedes hacer el submit con cualquier cosa que dispare el metodo submit del form. No hace falta devolver false si no usas el input submit. El input submit es un input button que dispara el metodo submit onClick por defecto. Si no tienes que hacer nada mas que enviar el form, vale. Si quieres hacer algo mas, como validar, input button te dara mas flexibilidad.
Puedes, por otro lado, usar el mismo name en lugar de un campo hidden, tal como sugiere caricatos. Usar input hidden te permite enviar informacion mas elaborada, pero en tu caso, no lo necesitas.


Saludos
  #6 (permalink)  
Antiguo 18/05/2011, 15:34
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: Validación de un campo y dos botones submit

Hola:

Cita:
Iniciado por sysmadryn Ver Mensaje
En realidad puedes hacer el submit con cualquier cosa que dispare el metodo submit del form...
... Siempre que javascript no esté desactivado, y todos tienen ese derecho (y se ha hecho mucho para evitar las chorradas que se hicieron en muchas páginas, como perseguir el cursor, y no es mi intención hacer una lista). Un botón submit no activa nada sino que es su funcionalidad... lo que es fácil es anularla con una buena validación, y es eso exactamente lo que yo siempre recomiendo, incluso doble (navegador y servidor)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 19/05/2011, 09:39
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 19 años, 7 meses
Puntos: 9
Respuesta: Validación de un campo y dos botones submit

Si no esta activado javascript, como validas (y desactivas !) en el navegador ? Me resulta una recomendacion contradictoria.
Si vas a validar, vas a usar js y entonces te conviene usar input button entre otras cosas porque no te deberas hacer problema por anular la unica ventaja del input submit !!.
Pero mientras lo que hagas funcione como quieres y no contradiga tu manual de estilo.... usa lo que te resulte mas comodo. !!
Por eso no me atreveria a decirte que no uses input submit. Lo que si no estoy muy de acuerdo en ser tan categorico con el "se debe", especialmente con un novato. Ya ves, el pregunto por una solucion y termino usando otra (validacion en server)
Hay muchas soluciones para el mismo problema. Algunas mas ingeniosas, algunas mas rapidas, algunas mas de estilo, algunas mas reusables, algunas mas debaggables. Veras tu que prefieres optimizar.

Saludos
  #8 (permalink)  
Antiguo 19/05/2011, 11: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: Validación de un campo y dos botones submit

Cita:
Iniciado por sysmadryn Ver Mensaje
Si vas a validar, vas a usar js y entonces te conviene usar input button entre otras cosas porque no te deberas hacer problema por anular la unica ventaja del input submit !!.

...
Evidentemente, no sabes validar, ya que simplemente enviando false al evento, este se cancela...

Ventajas y desventajas...

Para empezar, una validación segura solo se puede hacer en el servidor, ya que incluso sin botones es muy fácil inyectar un submit() en la url, pero sin un botón submit, y sin javascript, el formulario se considera no-accesible.

Si quieres saber como se valida (y otras cosas de los formularios): El abc de los formularios

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 19/05/2011, 12:18
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 19 años, 7 meses
Puntos: 9
Respuesta: Validación de un campo y dos botones submit

Tu te sigues centrando en lo facil que es anular el submit() del input submit. Pero no ves que no te hace falta anular nada usas input button.
<input type="submit"> es en mucho equivalente a <input type="button" onclick="form.submit()">

Si al disparar el evento click del boton deseas hacer algo mas tal como una validacion, usa input button.

En tu post anterior recomiendas la validacion en el navegador pero ahora expones lo inconveniente que es !! te vas a tener que decidir !!!
La validacion en el navegador es recomendable para facilitarle el llenado del form al usuario. Te evitara que los datos vayan y vengan del servidor por un error de carga. La coherencia de los datos y algunos temitas de seguridad lo manejas con validacion en el servidor.


Finalmente creo que seria mas saludable para todos los foreros que el moderador fuera mas moderado en sus comentarios ....

Saludos

Etiquetas: botones, submit, validar, campos
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 22:00.