Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] avansa a pesar de mensaje de error

Estas en el tema de avansa a pesar de mensaje de error en el foro de Javascript en Foros del Web. hola disculpenme que este volviendome loco con los post pero quiero decirles que gracias a su ayuda logre resolver lo de los campos de fecha ...
  #1 (permalink)  
Antiguo 31/01/2013, 15:06
 
Fecha de Ingreso: enero-2013
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 0
avansa a pesar de mensaje de error

hola disculpenme que este volviendome loco con los post pero quiero decirles que gracias a su ayuda logre resolver lo de los campos de fecha , e visto los foros y no e conseguido algo parecido a esto fijense, este script lo saque de la documentacion que me pasaron por aca ,me permite validar que una fecha tomada por 3 inputs por separado sea correcta aqui esta:




function checkDate(mes, dia, anyo) {
var diasMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);//creo un array con los dias de los meses
var ok = true;
</script>
<script type = "text/javascript">
function isValidDate(day,month,year){
/*
Funcion que muestra OK o KO dependiendo de si la fecha es correcta.

Tiene que recibir el dia, mes y año
*/

var dteDate;

//En javascript, el mes empieza en la posicion 0 y termina en la 11 siendo 0 el mes de enero
//Por esta razon, tenemos que restar 1 al mes
month=month-1;
//Establecemos un objeto Data con los valore recibidos
dteDate=new Date(year,month,day);

//Si el dia, mes y año concuerdan...
if ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()))
alert("OK")
else
alert("KO")

}
</script>
este script funciona bien lo raro que pasa es que cuando lo quiero usar en mi formulario que ya colocare, me da el mensaje de error pero me deja avansar a pesar del error lo cual no deberia aqui lo pongo:


<form id="forme" action="edad.php" onsubmit="isValidDate('dia','mes','ano')" method="post" >
Dia<input type="text" style="justify" id="dia" name="dia" size="5" onkeypress="return validar2(event)" maxlength="2" required>
Mes<input type="text" id="mes" style="justify" name="mes" size="5" onkeypress="return validar2(event)" maxlength="2" required>
Año<input type="text" style="justify" id="ano" name="año" size="5" onkeypress="return validar2(event)" maxlength="4" required>
<input type="submit" value="dale" > dale
</form>


como ven le mando los valores por el id de los campos a la función ,pero cuando colocas una fecha incorrecta te da el mensaje pero te lleva a la otra pagina, ¿que podra ser ?
  #2 (permalink)  
Antiguo 31/01/2013, 15:22
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: avansa a pesar de mensaje de error

Cuando no sea válido, devuelve false (return false;)

Y usa ese valor de retorno al llamar a la función:
Código HTML:
Ver original
  1. onsubmit="return isValidDate(...)"

Eso hará que se cancele el evento si no pasa la validación.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 01/02/2013, 07:49
 
Fecha de Ingreso: enero-2013
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: avansa a pesar de mensaje de error

Cita:
Iniciado por David Ver Mensaje
Cuando no sea válido, devuelve false (return false;)

Y usa ese valor de retorno al llamar a la función:
Código HTML:
Ver original
  1. onsubmit="return isValidDate(...)"

Eso hará que se cancele el evento si no pasa la validación.
muchas gracias david me funciono perfecto , ahora me surgio un detalle hay menara de que en lugar de que el mensaje de error salga encima del cuadrao de texto ya que quiero que la persona lo vea a medida que teclee
  #4 (permalink)  
Antiguo 01/02/2013, 08:01
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: avansa a pesar de mensaje de error

Puedes hacer algo como esto:
Código Javascript:
Ver original
  1. if (/* no pasa la validación */) {
  2.     var msg = document.createElement("div");
  3.     msg.innerHTML = "Mensaje de error";
  4.     campo.parentNode.insertBefore(msg, campo);
  5. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 01/02/2013, 09:39
 
Fecha de Ingreso: enero-2013
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: avansa a pesar de mensaje de error

gracias, nuevamente mejore el codigo de esta forma que permite que saque los valores directo asi quedo:


<script type = "text/javascript">
function isValidDate(){
/*
Funcion que muestra OK o KO dependiendo de si la fecha es correcta.

Tiene que recibir el dia, mes y año
*/
var day=document.getElementById('dia').value;
var month=document.getElementById('mes').value;
var year=document.getElementById('año').value;
var dteDate;

//En javascript, el mes empieza en la posicion 0 y termina en la 11 siendo 0 el mes de enero
//Por esta razon, tenemos que restar 1 al mes
month=month-1;
//Establecemos un objeto Data con los valore recibidos
dteDate=new Date(year,month,day);

//Si el dia, mes y año concuerdan...
if ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()))
window.alert("OK")

else
window.alert("KO")
return false;


//Si deseamos que devuelva true o false...
//return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}
</script>
<form id="forme" action="edad.php" onsubmit="return isValidDate()" method="post" >
Dia<input type="text" style="justify" id="dia" name="dia" size="5" onkeypress="return validar2(event)" maxlength="2" required>
Mes<input type="text" id="mes" style="justify" name="mes" size="5" onkeypress="return validar2(event)" maxlength="2" required>
Año<input type="text" style="justify" id="año" name="año" size="5" onkeypress="return validar2(event)" maxlength="4" required>
<input type="submit" value="dale" > dale
</form>

ahora no avansa para nada , pero si me dice cuando esta bien o mal la fecha es lo ultimo que me falta por pulir
  #6 (permalink)  
Antiguo 01/02/2013, 09:42
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: avansa a pesar de mensaje de error

Siempre estás devolviendo false, ya que no usas llaves en el if.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 01/02/2013, 09:48
 
Fecha de Ingreso: enero-2013
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: avansa a pesar de mensaje de error

como deberia ponerlo bien para que funciona disculpame por la estupida pregunta , ya que e puesto varias llavaes y se pone loco
  #8 (permalink)  
Antiguo 01/02/2013, 09:51
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: avansa a pesar de mensaje de error

Revisa esto:
https://developer.mozilla.org/es/doc...cias/if...else
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 01/02/2013, 10:00
 
Fecha de Ingreso: enero-2013
Mensajes: 38
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: avansa a pesar de mensaje de error

MI COMPU se lagueo , ya resolvi perdona tenia dias que no dormia y tenia mucho stress gracias de verdad a ti y a todos los miembros , dejo el codigo aqui para quien lo necesite como muestra de gratitud, este programa valida una fecha pedida por 3 diferentes inputs , ideal para aquellos que usan el dato edad calculado apartir de estos elementos :


<script type = "text/javascript">
function isValidDate(){
/*
Funcion que muestra OK o KO dependiendo de si la fecha es correcta.

Tiene que recibir el dia, mes y año
*/
var day=document.getElementById('dia').value;
var month=document.getElementById('mes').value;
var year=document.getElementById('año').value;
var dteDate;

//En javascript, el mes empieza en la posicion 0 y termina en la 11 siendo 0 el mes de enero
//Por esta razon, tenemos que restar 1 al mes
month=month-1;
//Establecemos un objeto Data con los valore recibidos
dteDate=new Date(year,month,day);

//Si el dia, mes y año concuerdan...
if ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear())){
window.alert("OK")


}else{
window.alert("KO")
return false;
}

//Si deseamos que devuelva true o false...
//return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}
</script>
<form id="forme" action="edad.php" onsubmit="return isValidDate()" method="post" >
Dia<input type="text" style="justify" id="dia" name="dia" size="5" maxlength="2" required>
Mes<input type="text" id="mes" style="justify" name="mes" size="5" maxlength="2" required>
Año<input type="text" style="justify" id="año" name="año" size="5" maxlength="4" required>
<input type="submit" value="dale" > dale
</form>

Etiquetas: campos, formulario, funcion, input, mensaje
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 15:55.