Foros del Web » Programando para Internet » Javascript »

Señores.. tengo el siguiente codigo y...

Estas en el tema de Señores.. tengo el siguiente codigo y... en el foro de Javascript en Foros del Web. me gustaria que hiciera lo contrario a lo que hace... me explico... que tome las fechas que yo le ingrese desde el año en curso ...
  #1 (permalink)  
Antiguo 29/06/2003, 12:07
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Señores.. tengo el siguiente codigo y...

me gustaria que hiciera lo contrario a lo que hace... me explico... que tome las fechas que yo le ingrese desde el año en curso hacia adelante........ Les pido su ayuda porque no se nada de Javascript y di con este código que en verdad solucionaria mis problemas.... de antemano ...graxias


<html>
<head>
<script language="JavaScript">

var aMeses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")

function padNmb(nStr, nLen, sChr){
var sRes = String(nStr);
for (var i = 0; i < nLen - String(nStr).length; i++)
sRes = sChr + sRes;
return sRes;
}

function makeDateFormat(nDay, nMonth, nYear){
var sRes;
sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0");
return sRes;
}

function addOpt(oCntrl, iPos, sTxt, sVal){
var selOpcion = new Option(sTxt, sVal);
oCntrl.options.add(selOpcion, iPos);
}

function lastDayOfMonth(nMonth, nYear){
var aMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ((nMonth == 2) && (nYear % 4 == 0))
return 29;
else
return aMonth[nMonth - 1];
}

function cambia(nCambiado){
var nAno;
var nMes;
with (document.frm){
nAno = parseInt(ano.options[ano.selectedIndex].value);
switch (nCambiado){
case 0:
llenaMes(mes, nAno);
break;
case 1:
nMes = parseInt(mes.options[mes.selectedIndex].value);
llenaDia(dia, nAno, nMes)
break;
case 2:
nMes = parseInt(mes.options[mes.selectedIndex].value);
nDia = parseInt(dia.options[dia.selectedIndex].value);
res.value = makeDateFormat(nDia, nMes + 1, nAno);
break;
}
}
}

function llenaAno(oAno){
var hoy = new Date();
var ini = 1960;
addOpt(oAno, 0, "", "");
for (var i = ini; i <= hoy.getYear(); i++)
addOpt(oAno, i - ini + 1, String(i), String(i));
}

function llenaMes(oMes, nAno){
var hoy = new Date();
var nFin = 11;
while (oMes.length > 0) oMes.remove(0);
if (nAno == hoy.getYear()) nFin = hoy.getMonth();
addOpt(oMes, 0, "", "");
for (var i = 0; i <= nFin; i++)
addOpt(oMes, i + 1, aMeses[i], String(i));
}

function llenaDia(oDia, nAno, nMes){
var hoy = new Date();
var nFin = lastDayOfMonth(nMes + 1, nAno);
while (oDia.length > 0) oDia.remove(0);
if (nAno == hoy.getYear() && nMes == hoy.getMonth()) nFin = hoy.getDate();
addOpt(oDia, 0, "", "");
for (var i = 1; i <= nFin; i++)
addOpt(oDia, i + 1, String(i), String(i));
}

</script>
</head>
<body onload=" llenaAno(document.frm.ano)">
<form name="frm">
<table border="0">
<tr>
<td align="right">
Año:
</td>
<td>
<select name="ano" onchange="cambia(0)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Mes:
</td>
<td>
<select name="mes" onchange="cambia(1)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Día:
</td>
<td>
<select name="dia" onchange="cambia(2)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Fecha:
</td>
<td>
<input type="text" name="res" disabled>
</td>
</tr>
</table>
</form>
</body>
</html>
__________________
Buena Vida...
Francisco
  #2 (permalink)  
Antiguo 29/06/2003, 12:21
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
La cuestión está en este fragmento.
Código:
function llenaAno(oAno){
var hoy = new Date();
var ini = 1960;
addOpt(oAno, 0, "", "");
for (var i = ini; i <= hoy.getYear(); i++)
addOpt(oAno, i - ini + 1, String(i), String(i));
}
Lo que está en rojo define el año en el que se empieza a contar y lo que está en verde el año en el que se acaba. Si quieres que empiece en el año actual y acabe, por ejemplo, en el 2025, debería ser así:
Código:
function llenaAno(oAno){
var hoy = new Date();
var ini = hoy.getYear();
addOpt(oAno, 0, "", "");
for (var i = ini; i <= 2025; i++)
addOpt(oAno, i - ini + 1, String(i), String(i));
}
Espero que te sirva.
Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #3 (permalink)  
Antiguo 29/06/2003, 12:25
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Cita:
Mensaje Original por Bravenap

Espero que te sirva.
Un saludo.

Claro que me ha serbido... te debo una Bravenarp... estoy totalmente agradecido de ti... no sabes el problema que me has sacado de encima... mil gracias nuevamente...
__________________
Buena Vida...
Francisco
  #4 (permalink)  
Antiguo 29/06/2003, 12:31
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
De nada hombre, para eso estamos aquí.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 30/06/2003, 06:08
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
A quien pueda ayudarme.... o a ti Bravenarp(que ya lo hiciste) saben?

Faltò cambiar el mes y el dia... precisamente hace lo que quiero pero al reves.. ya arreglé gracias a Bravenarp el año pero me faltaron los meses y el año... Ojo, debe tomar desde el dia, mes y año en curso hacia delante.


De antemano Gracias
__________________
Buena Vida...
Francisco
  #6 (permalink)  
Antiguo 30/06/2003, 07:56
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
No entendí muy bien lo que pides.

Vamos a ver, suponiendo que hoy es 30 de junio de 2003 tú lo que quieres es que aparezcan los años a partir del 2003. Eso ya lo hemos conseguido.

Pero, como ahora creo, lo que pides es que aparezcan los días a partir del día de hoy, es decir, 30 de junio. Pues eso sólo sería posible si junio tuviera 31 días. Pongamos ahora que yo lo que quiero es elegir el día 5, pero de julio. Entonces no tendría la opción de elegirlo ya que sólo se muestran los días a partir del 30.

Para el caso de los meses es lo mismo.

Entonces, o es que no te has explicado muy bien o es que yo últimamente no me entero de nada.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #7 (permalink)  
Antiguo 30/06/2003, 08:03
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Cita:
Mensaje Original por Bravenap

Entonces, o es que no te has explicado muy bien o es que yo últimamente no me entero de nada.

Un saludo.


Que tal Bravenap, yo aqui molestandote denuevo...mira

si te fijas en el ejemplo, tu tomas el año y se activa el input del mes dandote la posibilidad de escoger desde enero hasta el presente mes(Junio) y por ejemplo..me di cuenta ayer que desplegaba solo hasta el dia en curso... osea tomas el año y este te da hasta el mes en curso... tomas el mes y te da hasta el dia en curso...

Ahora , lo que quiero es que al tomar el año, me despliegue desde el mes en curso hasta fin de año, si tomo el mes de hoy .. hasta el dia de hoy... porque solo se actualiza.. no se si se entiende... si yo tomara Julio me desplegaria todos los dias del mes de julio... Capicce(está demás recordarte que de javascript no tengo ni idea) por eos apelo a tu ayuda Bravenap.. de antemano gracias
__________________
Buena Vida...
Francisco
  #8 (permalink)  
Antiguo 30/06/2003, 08:14
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Vale, ya lo entendí.

Bueno de momento te dejo las modificaciones para el mes:

Código:
function llenaMes(oMes, nAno){
var hoy = new Date();
var nFin = 11;
while (oMes.length > 0) oMes.remove(0);
if (nAno == hoy.getYear()) nFin = hoy.getMonth();
addOpt(oMes, 0, "", "");
for (var i = hoy.getMonth(); i <= 11; i++)
addOpt(oMes, i + 1, aMeses[i], String(i));
}

La de los días espero ponértela pronto porque estoy teniendo algunos problemillas.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #9 (permalink)  
Antiguo 30/06/2003, 08:21
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Cita:
Mensaje Original por Bravenap
Vale, ya lo entendí.

Bueno de momento te dejo las modificaciones para el mes:

Código:
function llenaMes(oMes, nAno){
var hoy = new Date();
var nFin = 11;
while (oMes.length > 0) oMes.remove(0);
if (nAno == hoy.getYear()) nFin = hoy.getMonth();
addOpt(oMes, 0, "", "");
for (var i = hoy.getMonth(); i <= 11; i++)
addOpt(oMes, i + 1, aMeses[i], String(i));
}

La de los días espero ponértela pronto porque estoy teniendo algunos problemillas.

Nuevamente te has pasado Bravenap, gracias por tu ayuda
__________________
Buena Vida...
Francisco
  #10 (permalink)  
Antiguo 30/06/2003, 08:26
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Y la de los días:

Código:
function llenaDia(oDia, nAno, nMes){
var hoy = new Date();
var nFin = lastDayOfMonth(nMes + 1, nAno);
while (oDia.length > 0) oDia.remove(0);
//if (nAno == hoy.getYear() && nMes == hoy.getMonth()) //nFin = hoy.getDate(); 
addOpt(oDia, 0, "", "");
for (var i = hoy.getDate(); i <= nFin; i++)
addOpt(oDia, i + 1, String(i), String(i));
}
La línea de rojo has de quitarla o ponerla como comentario (//).

De todas formas no estoy muy seguro de que vaya a funcionar para todos los días. Haz todas las pruebas que puedas para ver si hay fallos.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #11 (permalink)  
Antiguo 30/06/2003, 08:28
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Oye Bravenap.. hay un pequeño problema... cuando cambio al año 2004 me sigue tomando desde el mes de julio y en ese caso debia darme la posibilidad de tomar todo el año.... En todo caso estoy estudiando el código a ver si aprendo tambien.. y estoy viendo si puedo modificarlo... gracias nuevamente
__________________
Buena Vida...
Francisco
  #12 (permalink)  
Antiguo 30/06/2003, 08:35
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Sí según te escribía pensé que esa posibilidad se podía dar. La cuestión recae en la línea que se ha quitado y en poner algún condicional más.

Inténtalo. Yo por mi parte le echaré un ojo también, aunque ahora ya no tengo mucho tiempo.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #13 (permalink)  
Antiguo 30/06/2003, 10:21
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Aquí tienes el código completo. Creo que funciona bien:

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

var aMeses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")

function padNmb(nStr, nLen, sChr){
var sRes = String(nStr);
for (var i = 0; i < nLen - String(nStr).length; i++)
sRes = sChr + sRes;
return sRes;
}

function makeDateFormat(nDay, nMonth, nYear){
var sRes;
sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0");
return sRes;
}

function addOpt(oCntrl, iPos, sTxt, sVal){
var selOpcion = new Option(sTxt, sVal);
oCntrl.options.add(selOpcion, iPos);
}

function lastDayOfMonth(nMonth, nYear){
var aMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ((nMonth == 2) && (nYear % 4 == 0))
return 29;
else
return aMonth[nMonth - 1];
}

function cambia(nCambiado){
var nAno;
var nMes;
with (document.frm){
nAno = parseInt(ano.options[ano.selectedIndex].value);
switch (nCambiado){
case 0:
llenaMes(mes, nAno);
break;
case 1:
nMes = parseInt(mes.options[mes.selectedIndex].value);
llenaDia(dia, nAno, nMes)
break;
case 2:
nMes = parseInt(mes.options[mes.selectedIndex].value);
nDia = parseInt(dia.options[dia.selectedIndex].value);
res.value = makeDateFormat(nDia, nMes + 1, nAno);
break;
}
}
}

function llenaAno(oAno){
var hoy = new Date();
var ini = hoy.getYear(); 
addOpt(oAno, 0, "", "");
for (var i = ini; i <= 2025; i++)
addOpt(oAno, i - ini + 1, String(i), String(i));
}

function llenaMes(oMes, nAno){
var hoy = new Date();
var nFin = 11;
while (oMes.length > 0) oMes.remove(0);
if (nAno == hoy.getYear()){empieza = hoy.getMonth();}
else {empieza=0;} 
addOpt(oMes, 0, "", "");
for (var i = empieza; i <= nFin; i++)
addOpt(oMes, i + 1, aMeses[i], String(i));
}

function llenaDia(oDia, nAno, nMes){
var hoy = new Date();
var nFin = lastDayOfMonth(nMes + 1, nAno);
while (oDia.length > 0) oDia.remove(0);
if (nAno == hoy.getYear() && nMes == hoy.getMonth()){empieza = hoy.getDate();}
else{empieza=1;} 
addOpt(oDia, 0, "", "");
for (var i = empieza; i <= nFin; i++)
addOpt(oDia, i + 1, String(i), String(i));
}

</script>
</head>
<body onload=" llenaAno(document.frm.ano)">
<form name="frm">
<table border="0">
<tr>
<td align="right">
Año: 
</td>
<td>
<select name="ano" onchange="cambia(0)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Mes: 
</td>
<td>
<select name="mes" onchange="cambia(1)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Día: 
</td>
<td>
<select name="dia" onchange="cambia(2)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Fecha:
</td>
<td>
<input type="text" name="res" disabled>
</td>
</tr>
</table>
</form>
</body>
</html>
En negrita te dejo los cambios.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!

Última edición por Bravenap; 30/06/2003 a las 10:23
  #14 (permalink)  
Antiguo 30/06/2003, 12:59
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Graciaaaaaas!!!!!! Bravenap..... te pasate, mil gracias amigo... si te tuviera cerca te invitarias unas cervezas para celebrar funciona a la perfeccion ... te estoy profundamente agradecido ... ufff al fin puedo descanzar un poquitito... ya estaba buscando otras alternativas de codigo.... gracias nuevamente amigo.
__________________
Buena Vida...
Francisco
  #15 (permalink)  
Antiguo 30/06/2003, 13:04
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
De nada hombre, de nada, no es para tanto. Ya verás como cuando empieces a darle un poquito más a Javascript podrás hacer esto y más. De todas formas deberías agradecérselo más al que creo el código original, que eso si tiene mérito.

Bueno, me alegro de que funcione bien, un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
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 08:15.