Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problemas con onsubmit y action

Estas en el tema de Problemas con onsubmit y action en el foro de Javascript en Foros del Web. Buenas, estoy intentando realizar una validación de unos campos antes de mandar mi formulario mediante el action a mi fichero php. El problema es el ...
  #1 (permalink)  
Antiguo 02/06/2014, 01:07
 
Fecha de Ingreso: noviembre-2009
Mensajes: 33
Antigüedad: 15 años
Puntos: 0
Problemas con onsubmit y action

Buenas, estoy intentando realizar una validación de unos campos antes de mandar mi formulario mediante el action a mi fichero php.

El problema es el siguiente:

<form method="POST" action ="lanzar.php" id="0" onsubmit="return validar()">
<table>
.............
</table>

<input type="submit" name="aceptar" id="aceptar" value="Enviar" >

Ese sería mi formulario, quiero que primero me pase por la función validar() y si me devuelve true, me debería pasar al action, y en caso de false, que no haga nada y dar un alert.

El validar está de la siguiente manera:

function validar(){
var index = formHijos.numHijos.selectedIndex;
var val = formHijos.numHijos[index].value;
boolean go = false;
alert(val);
if(val == "1"){
if(document.getElementById("sprytextfield1") != "" && document.getElementById("sprytextfield2") != "" &&
document.getElementById("sprytextfield3") != "" && document.getElementById("sprytextfield4") != "" ){
go = true;
}else{
go = false;
}

}
if(val == "2"){
if(document.getElementById("sprytextfield1") != "" && document.getElementById("sprytextfield2") != "" &&
document.getElementById("sprytextfield3") != "" && document.getElementById("sprytextfield4") != "" &&
document.getElementById("sprytextfield5") != "" && document.getElementById("sprytextfield6") != "" &&
document.getElementById("sprytextfield7") != "" && document.getElementById("sprytextfield8") != "" ){
go = true;
}else{
go = false;
}

}
if(val == "3"){
if(document.getElementById("sprytextfield1") != "" && document.getElementById("sprytextfield2") != "" &&
document.getElementById("sprytextfield3") != "" && document.getElementById("sprytextfield4") != "" &&
document.getElementById("sprytextfield5") != "" && document.getElementById("sprytextfield6") != "" &&
document.getElementById("sprytextfield7") != "" && document.getElementById("sprytextfield8") != "" &&
document.getElementById("sprytextfield9") != "" && document.getElementById("sprytextfield10") != "" &&
document.getElementById("sprytextfield11") != "" && document.getElementById("sprytextfield12") != "" ){
go = true;
}else{
go = false;
}

}
if(val == "4"){
if(document.getElementById("sprytextfield1") != "" && document.getElementById("sprytextfield2") != "" &&
document.getElementById("sprytextfield3") != "" && document.getElementById("sprytextfield4") != "" &&
document.getElementById("sprytextfield5") != "" && document.getElementById("sprytextfield6") != "" &&
document.getElementById("sprytextfield7") != "" && document.getElementById("sprytextfield8") != "" &&
document.getElementById("sprytextfield9") != "" && document.getElementById("sprytextfield10") != "" &&
document.getElementById("sprytextfield11") != "" && document.getElementById("sprytextfield12") != "" &&
document.getElementById("sprytextfield13") != "" && document.getElementById("sprytextfield14") != "" &&
document.getElementById("sprytextfield15") != "" && document.getElementById("sprytextfield16") != "" ){
go = true;
}else{
go = false;
}

}
if(val == "5"){
if(document.getElementById("sprytextfield1") != "" && document.getElementById("sprytextfield2") != "" &&
document.getElementById("sprytextfield3") != "" && document.getElementById("sprytextfield4") != "" &&
document.getElementById("sprytextfield5") != "" && document.getElementById("sprytextfield6") != "" &&
document.getElementById("sprytextfield7") != "" && document.getElementById("sprytextfield8") != "" &&
document.getElementById("sprytextfield9") != "" && document.getElementById("sprytextfield10") != "" &&
document.getElementById("sprytextfield11") != "" && document.getElementById("sprytextfield12") != "" &&
document.getElementById("sprytextfield13") != "" && document.getElementById("sprytextfield14") != "" &&
document.getElementById("sprytextfield15") != "" && document.getElementById("sprytextfield16") != "" &&
document.getElementById("sprytextfield17") != "" && document.getElementById("sprytextfield18") != "" &&
document.getElementById("sprytextfield19") != "" && document.getElementById("sprytextfield20") != "" ){
go = true;
}else{
go = false;
}

}
alert (go);
return go;


}

Dependiendo de el numero seleccionado en un select anterior, debo validar un numero concreto de campos.
Busco cuantos debo validar, y en caso de que alguno esté vacio, go = false, y en el return debería ser false.

Pero no me llega a entrar siquiera al validar() y me va directo al action.

alguien me puede ayudar?
  #2 (permalink)  
Antiguo 02/06/2014, 01:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Problemas con onsubmit y action

Hola:

Normalmente si se detecta algún error se salta la validación, así que tal vez tengas que revisar la consola de tu navegador...

En principio no se ve de donde sale el objeto formHijos...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 02/06/2014, 01:19
 
Fecha de Ingreso: noviembre-2009
Mensajes: 33
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas con onsubmit y action

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Normalmente si se detecta algún error se salta la validación, así que tal vez tengas que revisar la consola de tu navegador...

En principio no se ve de donde sale el objeto formHijos...

Saludos
El formHijos es de esta parte:

<form name="formHijos" method="POST" >
<select name="numHijos" onchange="NH()">
<option selected value="1"> 1</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
<option value="5" >5</option>
</select>
</form>

Y la funcion NH es:

function NH(){
var index = formHijos.numHijos.selectedIndex;
val = formHijos.numHijos[index].value;


if(formHijos.numHijos.value == 1){
document.getElementById("0").style.display = '';
document.getElementById("1").style.display = '';
document.getElementById("2").style.display = 'none';
document.getElementById("3").style.display = 'none';
document.getElementById("4").style.display = 'none';
document.getElementById("5").style.display = 'none';
}
if(formHijos.numHijos.value == 2){
document.getElementById("0").style.display = '';
document.getElementById("1").style.display = '';
document.getElementById("2").style.display = '';
document.getElementById("3").style.display = 'none';
document.getElementById("4").style.display = 'none';
document.getElementById("5").style.display = 'none';
}
if(formHijos.numHijos.value == 3){
document.getElementById("0").style.display = '';
document.getElementById("1").style.display = '';
document.getElementById("2").style.display = '';
document.getElementById("3").style.display = '';
document.getElementById("4").style.display = 'none';
document.getElementById("5").style.display = 'none';
}
if(formHijos.numHijos.value == 4){
document.getElementById("0").style.display = '';
document.getElementById("1").style.display = '';
document.getElementById("2").style.display = '';
document.getElementById("3").style.display = '';
document.getElementById("4").style.display = '';
document.getElementById("5").style.display = 'none';
}
if(formHijos.numHijos.value == 5){
document.getElementById("0").style.display = '';
document.getElementById("1").style.display = '';
document.getElementById("2").style.display = '';
document.getElementById("3").style.display = '';
document.getElementById("4").style.display = '';
document.getElementById("5").style.display = '';
}

}
  #4 (permalink)  
Antiguo 02/06/2014, 01:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Problemas con onsubmit y action

Hola:

Antes ponías onsubmit en el form, y sin el atributo name; y ahora no pones onsubmit, sino onchange en el select...

¿Has visto la consola...?

No sé el navegador que usas, pero el nombre de un formulario no debería servir para referenciarlo... antes debería ir "document.forms", indicando que se trata de la colección de formularios de la página (tal vez en explorer cuele)...

Saludos

Edito:

Revisando mejor el código, veo que usas como id un número, cosa que antes no era permitido (aunque parece que con html5 se permite...)
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 02/06/2014 a las 01:29 Razón: Añadir un comentario
  #5 (permalink)  
Antiguo 02/06/2014, 01:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 33
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas con onsubmit y action

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Antes ponías onsubmit en el form, y sin el atributo name; y ahora no pones onsubmit, sino onchange en el select...

¿Has visto la consola...?

No sé el navegador que usas, pero el nombre de un formulario no debería servir para referenciarlo... antes debería ir "document.forms", indicando que se trata de la colección de formularios de la página (tal vez en explorer cuele)...

Saludos
Caricatos, es otro form diferente el formHijos del otro.

Hay algun problema al usar dos form en la misma página o algo ?

Que dices? no vale usar el document.getElementById("xx") directamente??

debo decirle document.formHijos.numHijos.selectedIndex por ejemplo?

Que yo haya visto funciona en chrome perfectamente.

Edito: Si que permite usar números, la parte de los display me funciona perfectamente.

Última edición por supernino69; 02/06/2014 a las 01:43
  #6 (permalink)  
Antiguo 02/06/2014, 01:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 33
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas con onsubmit y action

Acabo de verlo en la consola, que el boolean no lo reconocia, puse un var go = false.

Y ya me funciona eso, pero el problema está en que pasa por mi validación, y si me dejo algun campo vacio, aun así me devuelve true, y no sé porque pero se me convierte.
  #7 (permalink)  
Antiguo 02/06/2014, 02:05
 
Fecha de Ingreso: noviembre-2009
Mensajes: 33
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas con onsubmit y action

Vale, acabo de encontrar la solución, bastante tonta por mi parte.
En la funcion validar, al llamar a los campos, no puse el .value para recoger el valor de cada uno.

Gracias por la ayuda :D

Etiquetas: formulario, input, onsubmit, php, select
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 16:41.