Foros del Web » Programando para Internet » Javascript »

Problema con función

Estas en el tema de Problema con función en el foro de Javascript en Foros del Web. Hola que tal antes que nada un saludo. Me encuentro realizando una función en JavaScripot que valide que un número X (que será introducido en ...
  #1 (permalink)  
Antiguo 04/07/2006, 18:57
 
Fecha de Ingreso: octubre-2003
Ubicación: Veracruz, México
Mensajes: 169
Antigüedad: 20 años, 6 meses
Puntos: 0
Problema con función

Hola que tal antes que nada un saludo.

Me encuentro realizando una función en JavaScripot que valide que un número X (que será introducido en un textbox) se encuentre entre dos valores.

La función que desarrolle es esta:

Código:
<script language="javascript">
	function validaNum(cadena,inicio,fin){
		alert(cadena);
		var num=parseInt(cadena);
		if !((num >= inicio) && (num <=fin)){
			alert ('El valor introducido no es válido');
			return false;
		}
		return true;
	}
</script>
y lo mando a llamar desde el textbox en el evento onBlur:

Código HTML:
<input name="dia" type="text" id="dia" size="4" maxlength="2" onchange="validaNum(this.value,1,31)"/> 
y me marca un error. IE me dice que se esperaba un objeto, algo que yo interpreto como que no encuentra la función, ya que ya probe con alerts y si recibo el valor en el llamado a this.value.
Firefox de plano no me hace nada.

No sé porque marca este error, en que me estoy equivocando en la declaración de la función.

Aqui envio todo el código:

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Pruebas</title>
<script language="javascript">
	function validaNum(cadena,inicio,fin){
		alert(cadena);
		var num=parseInt(cadena);
		if !((num >= inicio) && (num <=fin)){
			alert ('El valor introducido no es válido');
			return false;
		}
		return true;
	}
</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <input name="dia" type="text" id="dia" size="4" maxlength="2" onchange="validaNum(this.value,1,31)"/>
  <input name="mes" type="text" id="mes" size="4" maxlength="2" />
</form>
</body>
</html> 
Que estará mal ? , De antemano gracias por la ayuda.
  #2 (permalink)  
Antiguo 04/07/2006, 22:25
Usuario no validado
 
Fecha de Ingreso: julio-2001
Mensajes: 766
Antigüedad: 22 años, 9 meses
Puntos: 0
Se podria enpezar por arreglar la funcion

<script language="javascript">
function validaNum(cadena,inicio,fin){
alert(cadena);
var num=parseInt(cadena);
if(!((num >= inicio) && (num <=fin))){
alert ('El valor introducido no es válido');
return false;
}
return true;
}

El error estaba en como hacias la validacion
  #3 (permalink)  
Antiguo 04/07/2006, 22:27
Usuario no validado
 
Fecha de Ingreso: julio-2001
Mensajes: 766
Antigüedad: 22 años, 9 meses
Puntos: 0
y no te recomiendo "OnChange" para validar
y si es asi un Alert no seria la manera da mandar
el error
  #4 (permalink)  
Antiguo 05/07/2006, 01:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Cita:
Iniciado por unKnown
y no te recomiendo "OnChange" para validar
y si es asi un Alert no seria la manera da mandar
el error
Exacto:

onchange posiblemente no funciona en firefox porque no es adecuado, pero onblur como has comentado (pero el código es otro) sí.

Los "return" que pones no tienen sentido porque no se los asignas a ningún evento de validación (onsubmit en formularios u onclick en enlaces), así que solo pueden valerte los mensajes.

Si quieres que se envíe el formulario y a la vez valide con el onblur, la forma tendría que ser así:
<form onsubmit="return validaNum(dia.value,1,31)"...
Pero veo que también tienes que validar luego el mes, así que tal vez corresponda usar un botón submit, y la validación:
onsubmit="return (validaNum(dia.value,1,31) && validaNum(mes.value, 1, 12)"

De todos modos, esa validación debería ser bastante más compleja, con el control de años bisiestos y meses de 30/31/ 28-29 días...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 19:33.