Foros del Web » Programando para Internet » Javascript »

Conseguir inhabilitar evento action si hay campos en blanco

Estas en el tema de Conseguir inhabilitar evento action si hay campos en blanco en el foro de Javascript en Foros del Web. tengo un formulario con 3 campos de texto los cuales no se pueden dejar en blanco y he utilizado la Faq 15 de esta pagina. ...
  #1 (permalink)  
Antiguo 31/05/2006, 05:33
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 18 años, 1 mes
Puntos: 2
Conseguir inhabilitar evento action si hay campos en blanco

tengo un formulario con 3 campos de texto los cuales no se pueden dejar en blanco y he utilizado la Faq 15 de esta pagina. El problema es que si encuentra campos vacios no me enlace con el evento action. y puedo quitarlo y que el enlace le haga con una funcion JavaScript pero asi no se si los formularios me pasaron las variables con $_POST o no.

Gracias!
  #2 (permalink)  
Antiguo 31/05/2006, 07:28
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

action no es un evento...

Lo que pides no es otra cosa que una validación...

Más o menos es así:
<form onsubmit="return (texto1.value != '' && texto2.value != '' && texto3.value != '')" action="destino.html" ...>

Con esto decimos que se envié si texto1 y texto2 y texto3 son distintoa a '' (cadena vacía)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 31/05/2006, 08:35
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 18 años, 1 mes
Puntos: 2
bien lo que me has dicho funciona no entiendo su funcionamiento ese return per funciona. Lo que me gustaria es que los campos que estuvieran en blanco se cambiaran de color y sacara un mensaje de alert y para ello lo he hecho en funciones pero no funciona:
Código:
function noVacia(){
if(!(texto1.value != '' && texto2.value != '' && texto3.value != '')){
	alert("Rellena todos los campos");
}
}

<form method="post" name="formulario" id="formulario" onsubmit="noVacio();" action="confirmacion.php">
esto unicamente pretende sacar la alerta pero bueno no funciona porque me imagino que este mal...los novatos somos asi...

Gracias
  #4 (permalink)  
Antiguo 31/05/2006, 11:13
 
Fecha de Ingreso: octubre-2005
Mensajes: 85
Antigüedad: 18 años, 6 meses
Puntos: 0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<script language="javascript">
function Verifica(){
if(form.txt1.value == ''){
alert('Llene el campo uno')
form.txt1.focus()
exit()
}

if(form.txt2.value == ''){
alert('Llene el campo dos')
form.txt2.focus()
exit()
}

if(form.txt3.value == ''){
alert('Llene el campo tres')
form.txt3.focus()
exit()
}
form.submit()
}
</script>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form" method="post" action="prueba2.htm">
<p>
<input name="txt1" type="text" id="txt1">
</p>
<p>
<input name="txt2" type="text" id="txt2">
</p>
<p>
<input name="txt3" type="text" id="txt3">
</p>
<p>
<input type="button" name="Submit" value="Enviar" onclick="Verifica()">
</p>
</form>
<p>Bueno ojala te sirva, bye</p>
</body>
</html>



Este archivo se abre si la Validacion esta ok

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
Se lleno los tres campos
</body>
</html>
  #5 (permalink)  
Antiguo 31/05/2006, 11:32
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
¡NOOOO!

No está bien ese tipo de validación aunque funcione...

Cada elemento tiene su valor semántico, ya sea etiqueta o atributo o evento... y un botón no es para hacer submit... para eso está el botón submit... y una validación o confirmación debe hacerse desde el mismo evento submit (onsubmit en tag form)

Si esa validación la haces en el form:
<form name="form" method="post" action="prueba2.htm" onsubmit="return Verifica(this)">
... Fíjate que puse un parámetro (this) para que la validación pueda fácilmente reutilizarse: function Verifica(form)
Además form a secas dentro de la función solo valdría con explorer (o navegadores MS)

Luego el botón que sea del tipo submit (sin ninguna floritura)... luego cambias todas las líneas exit() por return false (ya no se envía el form...) y quitas el form.submit() -en mi opinión una mala costumbre, aunque admito que la he tenido...-

Solo planteo la forma que me parece correcta...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 31/05/2006, 23:51
 
Fecha de Ingreso: noviembre-2004
Ubicación: Montréal - Santa Fe
Mensajes: 140
Antigüedad: 19 años, 5 meses
Puntos: 2
Perdon por mi ignorancia... podrias explicarme cual es la falla de trabajar con un button y hacer el form.submit()?

gracias
  #7 (permalink)  
Antiguo 01/06/2006, 01:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Cita:
Iniciado por cruzz
Perdon por mi ignorancia... podrias explicarme cual es la falla de trabajar con un button y hacer el form.submit()?

gracias
Lo que pasa es que, como puse antes, eso funciona, pero pierde el sentido semántico.
Para el envío se debe usar un botón submit; para la validación el evento del formulario... y aunque se puede usar para hacer submit, los otros botones deberían usarse para uso genérico (comodines)

Tal como expliqué en el mensaje anterior, con pocos cambios en un código sin sentido semántico, se le puede dar éste...

Si podemos hacer las cosas bien, ¿porqué no hacerlo?

En mi opinión, sería bueno acostumbrarse a usar las etiquetas dándole el uso que realmente tiene.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 01/06/2006, 02:51
 
Fecha de Ingreso: enero-2002
Mensajes: 265
Antigüedad: 22 años, 3 meses
Puntos: 0
No estoy muy enterado de Javascript pero (no sé si en tu pc tb lo tienes asi y ese puede ser el fallo) pero tienes onsubmit="noVacio();" y la funcion que has creado tiene el nombre noVacia();
Tal vez sea un comentario muy tonto, el mio, pero puede q el fallo esté aquí?
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 08:40.