Foros del Web » Programando para Internet » Javascript »

Novata con duda

Estas en el tema de Novata con duda en el foro de Javascript en Foros del Web. Buenos días a todo el mundo, Probablemente os parezca una tontería pero estoy intentando validar un formulario y no hay manera. He estado mirando por ...
  #1 (permalink)  
Antiguo 29/06/2009, 01:52
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Novata con duda

Buenos días a todo el mundo,

Probablemente os parezca una tontería pero estoy intentando validar un formulario y no hay manera. He estado mirando por internet y he visto varias maneras para llamar a la función pero ninguna me funciona. Primero quiero verificar que todos los campos están completos y luego quiero que haga lo que hay en "enviar.php".

Código:
function verifica(formulario){ 
	alert("zzzz"); //Lo he puesto de prueba, epro no llega a sacalir
    if(document.formulario.nombre.value == ""){ 
        alert("Debe introducir nombre"); 
        document.formulario.nombre.focus(); 
        return 0;
    }
 }

<form name="formulario" action="enviar.php" method="POST" onSubmit="return verifica(this)">
...
<td> <input name="nombre" type="TEXT" size="40"onfocus="value=''"></td>
...
<td><button  name="enviar" value="enviar" type="submit" style="height: 25px; width: 100px">Enviar</button>

</form>
  #2 (permalink)  
Antiguo 29/06/2009, 02:40
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: Novata con duda

Hola:

Para formularios, te recomiendo esta referencia: El abc de los formularios.

Sobre tu código, tienes un error en:
Código:
onfocus="value=''"
, porque no creo que tengas una variable value en tu código y supongo que te refieres al atributo value del control que tiene esa declaración... en resúmen, te falta el this...
Código:
onfocus="this.value=''"
Otra cosa (aunque no creo que provoque error) es que pasas un parámetro en la validación que no usas...

Código:
onsubmit="return verifica(this)"
Código:
if(formulario.nombre.value == ""){
Y por último, si el botón es de tipo submit, es mejor no ponerle nombre (name) porque es un dato que no creo que quieras procesar (aunqué sé que hay ocasiones que ese valor nos sirve.)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 29/06/2009, 02:56
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Novata con duda

Muchas gracias caricatos, he hecho los cambios que me has recomendado y estoy mirando el abc de los formularios. Ando un poco perdida ya que parece que la llamada es correcta pero no me aparece el alert que he puesto de prueba.
  #4 (permalink)  
Antiguo 29/06/2009, 03:33
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Novata con duda

Ya lo he solucionado, el javascript tenía otro if que no estaba bien. Muchas gracias!!!
  #5 (permalink)  
Antiguo 29/06/2009, 03:35
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: Novata con duda

Hola:

Acabo de probarlo en mi archiconocido probador: Probador de scripts y funciona correctamente (al menos en FF)... posiblemente falle en alguna de las líneas que has omitido...

Copia ésto:
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>
	http://www.caricatos.net/probador
</title>
<script type="text/javascript" >
function verifica(formulario){ 
	alert("zzzz"); //Lo he puesto de prueba, epro no llega a sacalir
    if(document.formulario.nombre.value == ""){ 
        alert("Debe introducir nombre"); 
        document.formulario.nombre.focus(); 
        return 0;
    }
 }
</script>
</head>
<body>
<form name="formulario" action="enviar.php" target="popup" method="GET" onsubmit="return verifica(this)">

<input name="nombre" type="TEXT" size="40" onfocus="this.value=''">
...
<button  name="enviar" value="enviar" type="submit" style="height: 25px; width: 100px">Enviar</button>

</form>


</body>
</html>
Y pégalo en el area de texto de la pestaña de edición del probador, y verás que funciona, aunque recuerda los consejos anteriores... y añado otro... cancela con return false, que aunque sea igual a return 0; es mejor costumbre.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 01:20.