Foros del Web » Programando para Internet » Javascript »

problema con js

Estas en el tema de problema con js en el foro de Javascript en Foros del Web. Hola Tengo un formulario que quiero validar con una js, pero no funciona. Lo que hago: <form action="alumnos.do" onsubmit="return validar(this)"> ......................... <input type="submit" name="operacion" value="CANCELAR" ...
  #1 (permalink)  
Antiguo 23/09/2008, 06:26
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
problema con js

Hola
Tengo un formulario que quiero validar con una js, pero no funciona. Lo que hago:

<form action="alumnos.do" onsubmit="return validar(this)">
.........................
<input type="submit" name="operacion" value="CANCELAR" />
<input type="submit" name="operacion" value="ACEPTAR" onclick="selecciona(true)" />
<input type="reset" name="limpiar" value="LIMPIAR FORMULARIO" />
</form>

y la js:

//función para validar el formulario
function validar(formulario){
var correcto=true;
var mensaje="";
if (formulario.operacion.value=="ACEPTAR"){
if (isNaN(formulario.horasAsistenciaReal.value)){
formulario.horasAsistenciaReal.focus();
mensaje="El valor de las horas de asistencia real debe ser numérico";
correcto=false;
}

if (formulario.DNI.value==""){
mensaje="El DNI no puede estar vacío";
formulario.DNI.focus();
correcto=false;
}

if (!correcto)alert(mensaje);

return correcto;
//}
}

Saludos!!
  #2 (permalink)  
Antiguo 23/09/2008, 08:20
Avatar de EPROM  
Fecha de Ingreso: abril-2005
Mensajes: 51
Antigüedad: 19 años
Puntos: 3
Respuesta: problema con js

Yo haría asi la validación... no sé si te sirva!!

Código:
<form action="alumnos.do" name="f1">
.........................
<input type="button" value="CANCELAR" />
<input type="button" value="ACEPTAR" onclick="validar()" />
<input type="reset" name="limpiar" value="LIMPIAR FORMULARIO" />
</form>

Código:
//función para validar el formulario
function validar() {
var formulario = document.f1;

if (isNaN(formulario.horasAsistenciaReal.value)) {
 formulario.horasAsistenciaReal.focus();
 alert("El valor de las horas de asistencia real debe ser numérico");
 return;
}

if (formulario.DNI.value=="") {
 formulario.DNI.focus();
 alert("El DNI no puede estar vacío");
 return;
}
 f1.submit();
}
SALUDOS
  #3 (permalink)  
Antiguo 23/09/2008, 12:00
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: problema con js

Probaré tu código, gracias, pero aún así me gustaría saber que estoy haciendo mal en el que yo he puesto.
Saludos!!
  #4 (permalink)  
Antiguo 23/09/2008, 12:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: problema con js

No entiendo qué estás tratando de hacer con la comparación:
Código javascript:
Ver original
  1. if (formulario.operacion.value=="ACEPTAR")
Ya que hay dos botones submit llamados operacion, por lo que es un array de campos, así que hacer tal comparación no funcionará.

P.S.: En cuanto al código de EPROM lo que no concuerdo es usar el método submit() para enviar cuando lo correcto es usar un elemento submit. Véase: http://www.forosdelweb.com/f13/malas...itarse-620808/.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 23/09/2008, 12:12
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: problema con js

En función del botón que pulses el valor cambiará, sólo voy a validar el formulario en el caso que valga aceptar. El código javascript funciona si está puesto en la jsp, en etiquetas <script></script>, dentro de la cabecera. Sin embargo estoy intentando pasar ese javascript a una js para usarlo en más jsp y no va.
  #6 (permalink)  
Antiguo 23/09/2008, 12:31
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: problema con js

Como te dije, operacion es un array de objetos, por lo que .value == "ACEPTAR" NUNCA será verdadero, por lo cual siempre enviará el formulario sin validarlo. Además, hay que tener en cuenta que el botón "CANCELAR" (cuyo propósito desconozco) también enviará el formulario.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 23/09/2008, 13:06
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: problema con js

El valor de operacion (que puede ser aceptar o cancelar) lo tengo que recoger en un controlador de spring, y dependiendo del valor que tenga me envía a una jsp o a otra y hace las operaciones correspondientes (en este caso editar al alumno o no).
Lo que no entiendo es por que es un array de objetos, no acabo de verlo. Es un botón que puede tener un valor u otro, pero no los dos, por eso lo hice con .value.
No discuto que tu tengas razón, yo llevo muy poco tiempo utilizando javascript. Lo que si me extraña es que ese código puesto en la jsp si me valida el formulario, porque yo lo voy viendo con alert().
  #8 (permalink)  
Antiguo 23/09/2008, 13:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema con js

¿Por qué es un array de objetos?. Porque son dos input con el mismo nombre.

Una idea que se me ocurre es hacer la validación en el onclick del input "ACEPTAR".
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 23/09/2008, 13:40
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: problema con js

Si, tienes razón en lo del onclick, ya lo había pensado, pero tengo que mirar si se puede llamar a dos funciones en el onclick y como. Voy a modificar eso y a ver si consigo que me funcionen las funciones desde la js... ya iré comentando como va la cosa.
Gracias David
Saludos!!
  #10 (permalink)  
Antiguo 23/09/2008, 13:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: problema con js

Para llamara a dos funciones solo necesitas separlas con el separador de instrucciones ";"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 24/09/2008, 00:44
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: problema con js

Hola!
Ya he cambiado la llamada a las dos funciones en el botón de aceptar.
Y encontré el error! que caprichoso es el javascript! jaja, un paréntesis que sobraba y no decía nada, ;)
De todas formas sigo haciendo pruebas con este código, si tengo problemas os vuelvo a dar un toque.
Saludos!!
__________________
Si lo supiese no preguntaría...
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 12:15.