Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/07/2007, 05:51
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 meses
Puntos: 45
Re: predeterminar un select formado automaticamente

Cita:
Iniciado por Shiryu_Libra Ver Mensaje
de hecho te entendi desde el primero, solo que un post sin bromas, no es un post ultimamente, y pues mirando tu codigo que me has proporcionado
Código PHP:
var dias c.split(",");
for (var 
i=0;i<dias.length;i++){
var 
nueva_opcion adOpt(select_diasidias[i], dias[i]);
if( 
dia == )
nueva_opcion.selected true;

esta perfecto... solo que un detallito amigo.... nada serio...
Código PHP:
if( dia == )
nueva_opcion.selected true;

solo que en esta parte de la evaluacion
debemos poner
Código PHP:
if( dia == )
nueva_opcion.options[i].selected true;

para que efectivamente selecciones lo que anteriormente escribiste
Creo que has pasado por alto que nueva_opcion es la opción (que te devuelve adOpt()), no es el select. El select es select_dias, así que no veo fallos.


He hecho un par de cambios con tu permiso . He simplificado ciertas cosas.

Lo primero es utilizar getFullYear().

Al principio, para rellenar los selects has puesto un bucle for que recorre los valores 0,1,2. Pero luego has puesto un switch con esos mismos casos. No tiene mucho sentido poner un switch si se va a entrar en todos los casos obligatoriamente. He quitado el bucle y el switch, que se anulaban mutuamente.

También he añadido soporte para años bisiestos (faltaría hacer lo mismo que hacemos con los meses de Cambiar, pero con los años).

En el switch de Cambiar también he simplificado algo, me parecía más cómodo así.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
HTML>
<
HEAD>
<
TITLE> New Document </TITLE>
</
HEAD>

<
BODY>
<
select id="years" name="years"></select>
<
select id="months" name="months" onchange="Cambia(document.getElementById('days'))" ></select>
<
select id="days" name="days"></select>

<
script language="JavaScript">

var 
a="Elegir Dia,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28";
var 
b="Elegir Dia,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29";
var 
c="Elegir Dia,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30";
var 
d="Elegir Dia,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31";
var 
e="Elegir Mes,Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre";
var 
f="Elegir Año,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013";

var 
mydate=new Date();
var 
year=mydate.getFullYear();        // full en vez de normal, el normal está en desuso
var dia=mydate.getDay();
var 
mes=mydate.getMonth();
if (
dia<10){dia="0"+dia;}
if (
mes<10){mes="0"+mes;}
//if (year < 1000){year+=1900;}
    
function addOpt(oCtrliPssTtsVl){
    var 
sOpcion=new Option(sTtsVl);
    
oCtrl.options[iPs]=sOpcion;
    return 
sOpcion;
}

function 
esBisiesto(nAno){
    var 
bRes true;
    
res bRes && (nAno == 0);
    
res bRes && (nAno 100 != 0);
    
res bRes || (nAno 400 == 0);
    return 
bRes;


function 
inicializar(){
    
alert("Dia "+dia+" mes "+mes+" year "+year);
    
//Este pedazo es para los ciclos
    //ele=f.split(",");
    //oCtrl=document.getElementById('cicloa');
    //while (oCtrl.length) oCtrl.remove(0);
    //for (i=0;i<ele.length;i++){addOpt(oCtrl,  i, ele[i], ele[i]);}

    //este otro para los demas controles de fecha
    //años
    
ele=f.split(",");
    
oCtrl=document.getElementById('years');
    while (
oCtrl.lengthoCtrl.remove(0);
    for (var 
i=0;i<ele.length;i++){
        var 
nueva_opcion addOpt(oCtrl,  iele[i], ele[i]);
        if(
ele[i]==year){nueva_opcion.selected true;}
    }
    
//meses
    
ele=e.split(",");
    
oCtrl=document.getElementById('months');
    while (
oCtrl.lengthoCtrl.remove(0);
    for (var 
i=0;i<ele.length;i++){
        var 
nueva_opcion addOpt(oCtrl,  iele[i], i);
        if( (
i-1)==mes ){nueva_opcion.selected true;}
    }
    
//dias
    
ele esBisiesto(year) ? a;
    
ele=ele.split(",");
    
oCtrl=document.getElementById('days');
    while (
oCtrl.lengthoCtrl.remove(0);
    for (var 
i=0;i<ele.length;i++){
        var 
nueva_opcion addOpt(oCtrl,  iele[i], ele[i]);
        if(
ele[i]==dia){nueva_opcion.selected true;}
    }
}



function 
Cambia(oCtrl) {
    var 
qmesi=document.getElementById('months').selectedIndex;
    switch (
i) {
        case 
1: case 3:    case 5:    case 7:    case 8:    case 10: case 12qmes=d; break;
        case 
4: case 6:    case 9:    case 11qmes=c; break;
        case 
2qmes=esBisiesto(year)? a; break;
        default: 
qmes=false;
    }
    if( 
qmes ) {
        while (
oCtrl.lengthoCtrl.remove(0);
        
ele=qmes.split(",");
        for(
i=0;i<ele.length;i++) {
           
addOpt(oCtrl,  iele[i], ele[i]);
        }
    }
}


window.onload inicializar;
</script>


</BODY>
</HTML> 

Bueno, supongo que así más o menos empezaríamos a tenerlo, pero falta el detallito ese de cambiar los días si el año cambia a bisiesto



Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.