Validación de campo en javascript

Iniciado por Feedeex, 24 Mayo 2011, 16:34 PM

0 Miembros y 1 Visitante están viendo este tema.

Feedeex

Hola a todos. Soy muy nuevo en esto de javascript y estuve viendo en la web como puedo validar campos. Supongamos que tengo el siguiente código:

<form method="post" action="enviar_formulario.php" OnSubmit="return validar_formulario(this);"
Ingrese su nombre:&nbsp;<input type="text" name="nombre" id="nombre">
<input type="submit" value="Enviar">


Y el código js:

<script language="javascript">
function valudar_formulario(formulario) {
if(formulario.nombre.value == '') {
  alert("Campo vacío");
   return false;
} else {
   return true;
}
</script>


¿Por qué al presionar en Enviar me sale el Alert con el mensaje pero de todas formas manda el formulario?, ¿el false no tendría que anular el envío?.
Y por cierto, me gustaría una vez que sepa porque pasa esto, si alguien puede decir, o pasar alguna página sobre como mejorar el formulario validando varios campos. Es decir, si yo tengo varios campos quiero que me diga algo así como:

Citar"Debe completar los siguientes campos":

Campo1
Campo2
Campo3

PD: Por cierto, el código recién me funcionaba y daba un alert, ahora ya ni eso :huh:

Shell Root

Código (html4strict) [Seleccionar]
<html>
<head>
<script language = "javascript">
function sValidar( sForm ){
if( sForm.txtPoC.value.length > 0 ){
return true;
}else{
return false;
}
}
</script>
</head>
<body>
<form action = "#" id = "Form1" name = "Form1" method = "POST" onSubmit = "return sValidar(this);">
<input type = "text" id = "txtPoC" name = "txtPoC" /><br />
<input type = "submit" id = "btnEnviar" name = "btnEnviar" value = "Enviar" />
</form>
</body>
</html>
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Nakp

no se si has copiado ese codigo del original pero debes cerrar la etiqueta form y debes cerrar el formulario :) (he ahi la razon del por que no funciona :P )

para comprobar si la cadena es '' usa ===
Ojo por ojo, y el mundo acabará ciego.

Feedeex

Ese formulario fue tan solo un ejemplo que escribí en el momento para no poner el código más largo que pertenece a la página, no fue una mala copia :xD
Encontré el error y era que me falto cerrar un "}", por eso nunca se ejecutaba la validación.

Y por cierto, ¿tienen alguna sugerencia para indicar los campos que faltan completar?. Porque vi que se hace algo como:

alert("Falta completar el campo"+campo1+);

Pero no comprendo bien como es para comprobar todos los campos. No pido código ni nada, tan solo alguna explicación breve que luego me las arreglaré.

Muchas gracias por la ayuda!

RedZer

puedes usa jquery validate, te evitas estar realizando cada funcion para cada campo..
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

Feedeex

Ahora me encuentro con otro problema:

Luego de hacer las validaciones, intento abrir un confirm para mostrar los datos ingresados y que confirme el envío del formulario. Pero el problema está en que no logro hacer un salto de línea en el mismo, y me muestra todo junto. El código es el siguiente:

function validar_formulario(formulario) {
    var nombre_apellido = formulario.nombre_apellido.value;
var calle = formulario.calle.value;
var numero_calle = formulario.numero_calle.value;
var telefono = formulario.telefono.value;
var email = formulario.email.value;
if(formulario.nombre_apellido.value == '') {
     alert("Complete el campo 'Nombre y Apellido'");
return false;
} else if(formulario.calle.value == '') {
alert("Complete el campo 'Calle'");
return false;
    } else if(formulario.numero_calle.value == '') {
alert("Complete el campo 'N&deg;'");
return false;
} else if(formulario.telefono.value == '') {
alert("Complete el campo 'Telefono'");
return false;
    } else if(formulario.email.value == '') {
alert("Complete el campo 'Email'");
return false;
} else if(confirm("Datos ingresados:\rNombre y Apellido:" + nombre_apellido + "\rCalle:" + calle + "\rN&deg;:" + numero_calle + "\rTelefono:" + telefono + "\rEmail:" + email + "\r\r¿Confirmar envio?")) {
return true;
} else {
return false;
}
}


Por lo que leí, el salto de línea es con \r, aunque también probé con \n, pero nada..

Shell Root

Código (javascript) [Seleccionar]
javascript:confirm("Hola\nComo\nEstas?", "");
javascript:var sPoC = "Hola";confirm(sPoC+"\nComo\nEstas?", "");
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Nakp

por que no mejor usas ventanas modales? O es tarea y todo tiene que ser "hardcoded"?
Ojo por ojo, y el mundo acabará ciego.