Comunidad de diseño web y desarrollo en internet online

problemas de base con validaciones en js

Citar            
MensajeEscrito el 06 Dic 2013 04:35 pm
Buenas,

Vuelvo sobre mis pasos porque estoy teniendo muchos problemas que supongo que son de base. ¿Me podéis ayudar, por favor? Estaré muy agradecido.

Este formulario, lanza la validación hecha en JS mediante ventanas de alert.
Comprueba nombre, comprueba apellido y cuando termina, a pesar de que los campos están vacíos sigue adelante, cuando debería detenerse

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script>
function enviar()
{

<!--recogida de variables-->
var ok = true;
var name = document.getElementById("nombre").value;
var user = document.getElementById("apellido").value;

if (name==null || name == "")
{
alert("Este campo no puede estar vacio");
ok = false
}
if (user==null || user == "")
{
alert("Este campo no puede estar vacio");
ok = false
}

}
</script>
</head>

<body>

<form id="prueba" method="post" action="resultado.php" onsubmit="return enviar(this)">
Tu nombre <input text id="nombre" name="nombre"><br />
Tus apellido <input text id="apellido" name="apellido"><br />
<input type="submit" value="Enviar" />
<input type="reset" value="Borrar" />
</form>
</body>
</html>

En el siguiente formulario, en vez de incluir un action en el form, le digo que me cargue una nueva página web cuando las validaciones sean correctas. Sin embargo, cuando termina la validación en vez de lanzar la nueva página, la url me cambia por esto validacionyenvio.html?nombre=dede&apellido=dedede. Algo que también me aparece si los campos están vacíos después de las validaciones.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script>
function enviar()
{

<!--recogida de variables-->
var ok = true;
var name = document.getElementById("nombre").value;
var user = document.getElementById("apellido").value;

if (name==null || name == "")
{
alert("Este campo no puede estar vacio");
ok = false
}
if (user==null || user == "")
{
alert("Este campo no puede estar vacio");
ok = false
}
else
{
window.location.assign("resultado.php")
}
ok = true;
}
</script>
</head>

<body>

<form id="prueba" onsubmit="return enviar(this)">
Tu nombre <input text id="nombre" name="nombre"><br />
Tus apellido <input text id="apellido" name="apellido"><br />
<input type="submit" value="Enviar" />
<input type="reset" value="Borrar" />
</form>

En esta otra ocasión he cambiado document.getElementById("nombre").value; por document.getElementsbyName para terminar de entender cuál es la diferencia. Esto es importante porque después la información la voy a insertar en una bbdd. En este caso, no sucede absolutamente nada y no sé por qué

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script>
function enviar()
{

<!--recogida de variables-->
var ok = true;
var name = document.getElementsByName("nombre");
var user = document.getElementsByName("apellido");

if (name==null || name == "")
{
alert("Este campo no puede estar vacio");
ok = false
}
if (user==null || user == "")
{
alert("Este campo no puede estar vacio");
ok = false
}
else
{
window.location.assign("resultado.php")
}
ok = true;
}
</script>
</head>

<body>

<form id="prueba" method="post" onsubmit="return enviar(this)">
Tu nombre <input text name="nombre"><br />
Tus apellido <input text name="apellido"><br />
<input type="submit" value="Enviar" />
<input type="reset" value="Borrar" />
</form>
</body>
</html>

Por vmlcano

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Dic 2013 06:50 pm
le da onsubmit="return funcion()";


y en ningun caso veo que retornes algo creo que ya definiste ok.. entonces solo te falta poner en tu funcion validad():

return ok;

Si es true... enviara el formulario, si es false. No hara nada.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 07 Dic 2013 11:56 am
El método getElementsByName() regresa un array, porque en el DOM puede haber más de un elemento con el mismo atributo "name", y por lo tanto no lo puedes comparar con un valor suelto (siempre dará false).

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.