Foros del Web » Programando para Internet » Javascript »

validar formulario según botón pulsado

Estas en el tema de validar formulario según botón pulsado en el foro de Javascript en Foros del Web. Hola Tengo un formulario con varios campos de texto y dos botones (Guardar y Cancelar). Los botones son de tipo input image pq así puedo ...
  #1 (permalink)  
Antiguo 29/12/2009, 08:16
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Pregunta validar formulario según botón pulsado

Hola
Tengo un formulario con varios campos de texto y dos botones (Guardar y Cancelar).
Los botones son de tipo input image pq así puedo aplicarles una imagen y un rollover.
Hasta aquí todo correcto, si pulso Guardar guarda un nuevo registro en la bd y si pulso cancelar me devuelve a la página anterior (esto lo hace en otro php). El problema viene cuando quiero validar q los campos de texto no queden vacios. He probado a hacer la validación en el onclick de los botones, pero no me va, no se si por ser input image o q, el caso es q no tira.
La situación ahora mismo es q como el validar está en el onsubmit del formulario, me valida tanto si guarda como si cancela. Entonces, cuando le doy a cancelar (con los campos vacios) no me vuelve hacia atrás sino que me dice q los campos están vacios.
He pensado q una buena opción sería en el onsubmit del formulario, o en la funcion javascript, comprobar que botón he pulsado, pero no se como hacerlo.
Os pongo el código por si alguien se le ocurre algo
Gracias


Código Javascript
Código:
<script>
function valida_envia()
{
   with(document.fcalen)
   {
      if(!titulo.value)
      {
         alert('Falta el titulo.');
         titulo.focus()
         return false;   
      }
	  if(!descripcion.value)
      {
         alert('Falta la descripción.');
         titulo.focus()
         return false;   
      }

   }
}
</script>
Código Html:
Código:
<form name="fcalen" action="<?php echo $archivo ?>" method="post" onSubmit="return valida_envia();">
<table>
	<tr>
		<td>Título:<input style="font-size:10px" type="text" name="titulo" value="<?php echo $titulo ?>" size="50" maxlength="50"></td>
		<td>Descripción:<input style="font-size:10px" type="text" name="descripcion" value="<?php echo $descripcion ?>" size="80" maxlength="150"></td>
	</tr>
	<tr>
		<td><input type="image" name="guardar" src="imagenes/guardar_off.gif" onmouseout="javascript:this.src='imagenes/guardar_off.gif'" onmouseover="javascript:this.src='imagenes/guardar_on.gif'" alt="Guardar" /></td>
		<td><input type="image" name="cancelar" src="imagenes/cancelar_off.gif" onmouseout="javascript:this.src='imagenes/cancelar_off.gif'" onmouseover="javascript:this.src='imagenes/cancelar_on.gif'" alt="Cancelar" /></td>
	</tr>
	<tr>
		<td><input type=hidden name="id" value="<?php echo $id ?>"></td>
	</tr>		
</table>
</form>
  #2 (permalink)  
Antiguo 29/12/2009, 14:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: validar formulario según botón pulsado

En el boton de guardar, ponle un evento más: onclick="this.form.submit()"
  #3 (permalink)  
Antiguo 29/12/2009, 14:55
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Respuesta: validar formulario según botón pulsado

Gracias por la respuesta.
Lo q ocurre es q el botón guardar si funciona bien, lo que quiero es q cuando pulse cancelar no valide. Si le pongo ese evento, valida, pero aunq la validación sea negativa mete en la bd un registro vacío.
  #4 (permalink)  
Antiguo 29/12/2009, 15:45
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: validar formulario según botón pulsado

Hola:

los input type image son variantes del tipo submit, que adicionan las coordenadas donde se pincha... Si quieres usar imágenes para cancelar puedes ponerla en un tag button normal pero con el type="reset", o "button"

<button type="reset"><img src="reset.gif" alt="reset" /></button>

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 29/12/2009, 16:05
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Respuesta: validar formulario según botón pulsado

Muchas gracias caricatos
Si pongo un button no se aplicarle rollover (todo hay q decirlo q es q soy novata en esto)
Ya he conseguido q me detecte que boton pulso, si Guardar o Cancelar

Código javascript:
Código:
<script language="JavaScript">
	var imagenclick=false;
	function validar(){
		if (imagenclick){
			alert('has pulsado guardar');
			return false;   
		}
		else{
			alert('has pulsado cancelar');
			return false;   
		}
	}
</script>
Botones:
Código:
<td><input type="image" name="guardar" src="imagenes/guardar_off.gif"  onmouseout="javascript:this.src='imagenes/guardar_off.gif'" onmouseover="javascript:this.src='imagenes/guardar_on.gif'" onclick="JavaScript:imagenclick=true;"  alt="Guardar" /></td>

<td><input type="image" name="cancelar" src="imagenes/cancelar_off.gif" onmouseout="javascript:this.src='imagenes/cancelar_off.gif'" onmouseover="javascript:this.src='imagenes/cancelar_on.gif'" alt="Cancelar"/></td>
Form:
Código:
<form name="fcalen" action="<?php echo $archivo ?>" method="post" onsubmit="return validar()">
Ya solo faltaría hacer la validación cuando he pulsado Guardar.
He puesto esto dentro del bucle if q reconoce la pulsación de guardar, pero no va:

Código:
      if(!titulo.value)
      {
         alert('Falta el titulo.');
         titulo.focus()
         return false;   
      }
	  if(!descripcion.value)
      {
         alert('Falta la descripción.');
         titulo.focus()
         return false;   
      }
Si alguien me puede echar una mano con la validación... uff me está volviendo loca

Última edición por Mar_Nube; 29/12/2009 a las 16:15
  #6 (permalink)  
Antiguo 29/12/2009, 16:16
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: validar formulario según botón pulsado

En la función validar, quita las alertas y en el caso del botón guardar, realiza la validación. Ejemplo:
Código HTML:
Ver original
  1. <script language="JavaScript">
  2.     var imagenclick=false;
  3.     function validar(){
  4.         if (imagenclick){
  5.             //Aquí realizas la validación o llama a una función externa que la haga
  6.         }
  7.         else{
  8.             //No realizas nada
  9.         }
  10.     }
  #7 (permalink)  
Antiguo 29/12/2009, 16:25
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Respuesta: validar formulario según botón pulsado

Ya bebo, pero el problema es q no se en q me estoy equivocando al hacer la validación.
Tengo puesto lo siguiente en la funcion:

Código:
<script language="JavaScript">
	var imagenclick=false;
	function validar(){
		if (imagenclick){
			if (fcalen.titulo.value==""){
				alert('Debe rellenar el título.');
	         	return false; 
			}  
		}
		else{
			return true;   
		}
	}
</script>
Si pulsa Guardar, con el titulo en blanco, debería madar el alert para q lo rellene y no enviar el submit. Sin embargo, no muestra el alert y además envia los datos (vacios eso si) al siguiente archivo php q realiza la inserción en la bd.
Me podrías decir si ves donde está el error?
Gracias
  #8 (permalink)  
Antiguo 29/12/2009, 16:32
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Respuesta: validar formulario según botón pulsado

Eyyyy!!!!
Ya está
Es q estaba poniendo mal la condicion del if (es lo q tiene programar de oido
El codigo de validación quedaría:

Código:
<script language="JavaScript">
	var imagenclick=false;
	function validar(){
		if (imagenclick){
			imagenclick=false;
			if (document.fcalen.titulo.value.length==0){
				alert('Debe rellenar el título.');
	         	return false; 
			}  
		}
		else{
			return true;   
		}
	}
</script>
Muchas gracias a todos
Y si veis q está mal o se puede mejorar... soy toda oidos jaja
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 11:39.