Foros del Web » Programando para Internet » Javascript »

Formulario que funciona según fecha

Estas en el tema de Formulario que funciona según fecha en el foro de Javascript en Foros del Web. Hola gente, He provado de hacer que un formulario deje de funcionar después de X fecha he provado ha hacerlo con asp sin exito y ...
  #1 (permalink)  
Antiguo 04/01/2005, 07:17
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 8 meses
Puntos: 0
Formulario que funciona según fecha

Hola gente,
He provado de hacer que un formulario deje de funcionar después de X fecha he provado ha hacerlo con asp sin exito y creo que esto se puede hacer con javascript lo que no se como hacerlo haver si alguien puede ayudarme.

Un saludo
  #2 (permalink)  
Antiguo 04/01/2005, 10:45
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
He de decirte que con Javascript se tomará la fecha del ordenador del que visita tu página, por lo que si cambia el visitante la fecha del ordenador podrá rellenar el formulario. Hecha esta salvedad te indico como hacerlo:

Código HTML:
<html>
<head>
<script language="JavaScript">

//Fecha límite para el formulario

var diaLimite=1;
var mesLimite=1;//enero=0, febrero=1, marzo=2 ... diciembre=11
var anioLimite=2005;


//Si quieres poner la fecha del servidor debes llenar el valor de fechaASP con el formato aaaa/mm/dd por ejemplo de la forma sugerida.
//<% Dim Actual
//Actual = Now() %>
var fechaASP//=<%= Day(Actual) & "/" & Month(Actual) & "/" & Year(Actual) %> //formato: dd/mm/aaaa
if(fechaASP){
diaASP=fechaASP.split("/");
var dia=diaASP[0];
var mes=diaASP[1];
var anio=diaASP[2];
var fecha=new Date(anio,mes,dia);
}
else{

var fecha=new Date();
}
var limite=new Date (anioLimite,mesLimite,diaLimite);

function comprobar(){
formulario=document.forms[0];
if(limite<fecha){
for(a=0;a<formulario.elements.length;a++){
formulario[a].disabled=true;
}
}
else{

//No ponemos el Action del formulario hasta que nos aseguramos de que se puede mandar.

formulario.action="destino.html"

}
}

</script>
</head>
<body onload="comprobar()">
<form name="frm" action="#">
<input type="text" name="elemento0"><br>
<input type="text" name="elemento1"><br>
<input type="text" name="elemento2"><br>
<select name="pepote" size="1">
				<option value="1" SELECTED>Elige</option>
				<option value="2">Casa</option>
				<option value="3">Cosa</option></select>

<input type="submit" name="enviar" value="enviar" >
</form>
</body>
</html> 
He puesto un código para que puedas meter con ASP la fecha actual. Espero que te sirva.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 04/01/2005, 10:59
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 8 meses
Puntos: 0
No se si me he explicado bien o no lo entiendo copio el codigo pero me sigue mostrando el formulario y yo lo que quiero es que no me lo muestre a partir d esa fecha.

Un saludo
  #4 (permalink)  
Antiguo 04/01/2005, 11:19
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Podría haberte pasado el código sin comentarios, pero no lo he hecho. Lo normal es leer un poco el código y sus comentarios de lo que se te pasa. Como ves en fecha límite está el 1 de febrero de 2005. Y como aún no ha llegado pues muestra el formulario. Si lo cambias a una fecha anterior no lo mostrará.

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 04/01/2005, 11:56
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 8 meses
Puntos: 0
Perdona no tube en cuenta el 0

Un saludo y gracias
  #6 (permalink)  
Antiguo 04/01/2005, 12:01
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
No, perdona tú . He estado muy agresivo. Me sienta mal el trabajar en estas fechas

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 04/01/2005, 14:51
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 8 meses
Puntos: 0
Pués creo que no me funciona ponga la fecha que ponga me redirecciona igualmente.

Un saludo
  #8 (permalink)  
Antiguo 04/01/2005, 15:19
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Cómo que te redirecciona?

Lo que hace es mostrar el formulario deshabilitado si se ha pasado la fecha en cuestión.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #9 (permalink)  
Antiguo 04/01/2005, 15:28
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 8 meses
Puntos: 0
Perdona esto era con otro codigo que prové...
Lo que me pasa con este es que lo coloco encima del form y no me hac nada
en cambio cuando saco solo lo que es el form en sí y le pongo el codigo si que va, que puede pasar, algun conflicto?

Un saludo
  #10 (permalink)  
Antiguo 04/01/2005, 15:53
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Pones el onload del body?

<body onload="comprobar()">
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #11 (permalink)  
Antiguo 04/01/2005, 16:06
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 8 meses
Puntos: 0
si lo pongo...
  #12 (permalink)  
Antiguo 04/01/2005, 16:14
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 8 meses
Puntos: 0
Debe ser que hay algún conflicto por que tengo includes de otras paginas. No hay otra manera de hacerlo?
Si extraigo solo lo que es el formulario funciona pero cuando lo pongo en lo que es la pagina en sí no funciona.

Un saludo
  #13 (permalink)  
Antiguo 04/01/2005, 16:44
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Prueba con esto

Código HTML:
<html>
<head>
<script language="JavaScript">

//Fecha límite para el formulario

var diaLimite=1;
var mesLimite=1;//enero=0, febrero=1, marzo=2 ... diciembre=11
var anioLimite=2005;


//Si quieres poner la fecha del servidor debes llenar el valor de fechaASP con el formato aaaa/mm/dd por ejemplo de la forma sugerida.
//<% Dim Actual
//Actual = Now() %>
var fechaASP//=<%= Day(Actual) & "/" & Month(Actual) & "/" & Year(Actual) %> //formato: dd/mm/aaaa
if(fechaASP){
diaASP=fechaASP.split("/");
var dia=diaASP[0];
var mes=diaASP[1];
var anio=diaASP[2];
var fecha=new Date(anio,mes,dia);
}
else{

var fecha=new Date();
}
var limite=new Date (anioLimite,mesLimite,diaLimite);

function comprobar(){
formulario=document.forms['frm'];
if(limite<fecha){
for(a=0;a<formulario.elements.length;a++){
formulario[a].disabled=true;
}
}
else{

//No ponemos el Action del formulario hasta que nos aseguramos de que se puede mandar.

formulario.action="destino.html"

}
}

</script>
</head>
<body onload="comprobar()">
<form name="frm" action="#">
<input type="text" name="elemento0"><br>
<input type="text" name="elemento1"><br>
<input type="text" name="elemento2"><br>
<select name="pepote" size="1">
				<option value="1" SELECTED>Elige</option>
				<option value="2">Casa</option>
				<option value="3">Cosa</option></select>

<input type="submit" name="enviar" value="enviar" >
</form>
</body>
</html> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 04/01/2005 a las 16:49
  #14 (permalink)  
Antiguo 05/01/2005, 01:00
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 8 meses
Puntos: 0
Más de lo mismo... proBaré ha hacerlo de otr manera.


Muchas gRacias y un saludo
  #15 (permalink)  
Antiguo 05/01/2005, 02:38
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Vamos a ver, porque es extrañísimo. Copia esto en el head:
Código HTML:
<script language="JavaScript">

//Action del formulario

	var accion="destino.html";

//Fecha límite para el formulario

	var diaLimite=1;
	var mesLimite=1;//enero=0, febrero=1, marzo=2 ... diciembre=11
	var anioLimite=2005;

var hoyEs=new Date();
var fechaLimite=new Date (anioLimite,mesLimite,diaLimite);

function comprobar(nameDelForm){
	formulario=document.forms[nameDelForm];
	if(fechaLimite<hoyEs){
		for(a=0;a<formulario.elements.length;a++){
			formulario[a].disabled=true;
		}
	}
	else{
		//No ponemos el Action del formulario hasta que nos aseguramos de que se puede mandar.
		formulario.action=accion;
	}
}

</script> 
Y luego en el body pones:

Código HTML:
 <body onload="comprobar('frm')//Pon entre los paréntesis el name del form que quieras deshabilitar"> 
Ten cuidado de poner el name del form entre comillas y dentrodel paréntesis. Te he puesto 'frm' que es el name del form del ejemplo.

Acuerdate que una vez que comprueba la fecha, si es válida cambia el action del form al destino que está en la variable accion. En el action de dentro del formulario pon # o algo parecido, no sea que corten la carga de la página y no se pueda ejecutar el script y mande el formulario.

He cambiado los nombres de las variables por si acaso. Comprueba que están las etiquetas del form bien puestas, la de apertura y la de cierre. Si te sigue sin funcionar puedes indicar la url de la página para echarle un vistazo?

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 00:14.