Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/09/2011, 13:21
mixzplit
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 10 meses
Puntos: 2
Calendario JavaScript

HOla compañeros de Foros de Web, tengo un problema con un calendario que me descargue de una web, no recuerdo ahorita el nombre, la situacion es la siguiente, el calendario se despliega correctamente, pero lo que quiero es que al seleccionar la fecha me escriba en el campo de texto la fecha asi: 05-10-2011 o 05-09-2011, es decir que cuando los dias y los meses sean menores a 10 me le agregue un 0 adelante.

He cambiado varias cosas pero no doy con lo que quiero, necesito comparar fechas y no lo logro ya que el calendario me escribe la fecha asi 5-9-2011.

Aqui en codigo JS

Código Javascript:
Ver original
  1. jQuery.fn.calendarioDW = function() {
  2.    this.each(function(){
  3.         var mostrando = false;
  4.         var calendario;
  5.         var capaDiasMes;
  6.         var capaTextoMesAnoActual = $('<div class="visualmesano"></div>');
  7.         var dias = ["l", "m", "m", "j", "v", "s", "d"];
  8.         var nombresMes = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]
  9.        
  10.         var elem = $(this);
  11.         var boton = $("<a class='botoncal' href='#'><span></span></a>");
  12.         elem.after(boton);
  13.        
  14.         boton.click(function(e){
  15.             e.preventDefault();
  16.             mostrarCalendario();
  17.         });
  18.         elem.click(function(e){
  19.             this.blur();
  20.             mostrarCalendario();
  21.         });
  22.        
  23.         function mostrarCalendario(){
  24.             if(!mostrando){
  25.                 mostrando = true;
  26.                 var capaDiasSemana = $('<div class="diassemana"></div>');
  27.                 $(dias).each(function(indice, valor){
  28.                     var codigoInsertar = '<span';
  29.                     if (indice==0){
  30.                         codigoInsertar += ' class="primero"';
  31.                     }
  32.                     if (indice==6){
  33.                         codigoInsertar += ' class="domingo ultimo"';
  34.                     }
  35.                     codigoInsertar += ">" + valor + '</span>';
  36.                    
  37.                     capaDiasSemana.append(codigoInsertar);
  38.                 });
  39.                
  40.                 capaDiasMes = $('<div class="diasmes"></div>');
  41.                
  42.                 var objFecha = new Date();
  43.                 var textoFechaEscrita = elem.val();
  44.                 if (textoFechaEscrita!= ""){
  45.                     if (validarFechaEscrita(textoFechaEscrita)){
  46.                         var arrayFechaEscrita = textoFechaEscrita.split("-");
  47.                         if(arrayFechaEscrita[2].length == 2){
  48.                             if (arrayFechaEscrita[2].charAt(0)=="0"){
  49.                                 arrayFechaEscrita[2] = arrayFechaEscrita[2].substring(1);
  50.                             }
  51.                             arrayFechaEscrita[2] = parseInt(arrayFechaEscrita[2]);
  52.                             if (arrayFechaEscrita[2] < 50)
  53.                                 arrayFechaEscrita[2] += 2000;
  54.                         }
  55.                         objFecha = new Date(arrayFechaEscrita[2], arrayFechaEscrita[1]-1, arrayFechaEscrita[0])
  56.                     }
  57.                 }
  58.                
  59.                
  60.                 var mes = objFecha.getMonth();
  61.                 var ano = objFecha.getFullYear();
  62.                 //muestro los días del mes y año dados
  63.                 muestraDiasMes(mes, ano);
  64.                
  65.                 //control para ocultar el calendario
  66.                 var botonCerrar = $('<a href="#" class="calencerrar"><span></span></a>');
  67.                 botonCerrar.click(function(e){
  68.                     e.preventDefault();
  69.                     calendario.hide("slow");
  70.                 })
  71.                 var capaCerrar = $('<div class="capacerrar"></div>');
  72.                 capaCerrar.append(botonCerrar)
  73.                
  74.                 //controles para ir al mes siguiente / anterior
  75.                 var botonMesSiguiente = $('<a href="#" class="botonmessiguiente"><span></span></a>');
  76.                 botonMesSiguiente.click(function(e){
  77.                     e.preventDefault();
  78.                     mes = (mes + 1) % 12;
  79.                     if (mes==0)
  80.                         ano++;
  81.                     capaDiasMes.empty();
  82.                     muestraDiasMes(mes, ano);
  83.                 })
  84.                 var botonMesAnterior = $('<a href="#" class="botonmesanterior"><span></span></a>');
  85.                 botonMesAnterior.click(function(e){
  86.                     e.preventDefault();
  87.                     mes = (mes - 1);
  88.                     if (mes==-1){
  89.                         ano--;
  90.                         mes = 11
  91.                     }  
  92.                     capaDiasMes.empty();
  93.                     muestraDiasMes(mes, ano);
  94.                 })
  95.                 var botonCambioAno = $('<a href="#" class="botoncambiaano"><span></span></a>')
  96.                 botonCambioAno.click(function(e){
  97.                     e.preventDefault();
  98.                     var botonActivoSelAnos = $(this);
  99.                     //creo una capa con una serie de años para elegir
  100.                     var capaAnos = $('<div class="capaselanos"></div>');
  101.                     //genero 10 años antes y 10 después
  102.                     for (var i=ano-10; i<=ano+10; i++){
  103.                         var codigoEnlace = '<a href="#"';
  104.                         if (i==ano)
  105.                             codigoEnlace += '<class="seleccionado"';
  106.                         if (i==ano+10)
  107.                             codigoEnlace += ' class="ultimo"';
  108.                         codigoEnlace += '><span>' + i + '</span></a>';
  109.                         var opcionAno = $(codigoEnlace);
  110.                         opcionAno.click(function(e){
  111.                             e.preventDefault();
  112.                             ano = parseInt($(this).children().text());
  113.                             capaDiasMes.empty();
  114.                             muestraDiasMes(mes, ano);
  115.                             capaAnos.slideUp();
  116.                             capaAnos.detach();
  117.                         })
  118.                         capaAnos.append(opcionAno);
  119.                     }
  120.                     //coloco la capa en la página
  121.                     $(document.body).append(capaAnos);
  122.                     //posiciono la capa
  123.                     capaAnos.css({
  124.                         top: (botonActivoSelAnos.offset().top + 12) + "px",
  125.                         left: (botonActivoSelAnos.offset().left - 25) + "px"
  126.                     })
  127.                     capaAnos.slideDown();
  128.                 })
  129.                
  130.                 //capa para mostrar el texto del mes y ano actual
  131.                 var capaTextoMesAno = $('<div class="textomesano"></div>');
  132.                 var capaTextoMesAnoControl = $('<div class="mesyano"></div>')
  133.                 capaTextoMesAno.append(botonMesSiguiente);
  134.                 capaTextoMesAno.append(botonMesAnterior);
  135.                 capaTextoMesAno.append(capaTextoMesAnoControl);
  136.                 capaTextoMesAnoControl.append(capaTextoMesAnoActual);
  137.                 capaTextoMesAnoControl.append(botonCambioAno);
  138.                
  139.                 //calendario y el borde
  140.                 calendario = $('<div class="capacalendario"></div>');
  141.                 var calendarioBorde = $('<div class="capacalendarioborde"></div>');
  142.                 calendario.append(calendarioBorde);
  143.                 calendarioBorde.append(capaCerrar);
  144.                 calendarioBorde.append(capaTextoMesAno);
  145.                 calendarioBorde.append(capaDiasSemana);
  146.                 calendarioBorde.append(capaDiasMes);
  147.                
  148.                 //inserto el calendario en el documento
  149.                 $(document.body).append(calendario);
  150.                 //lo posiciono con respecto al boton
  151.                 calendario.css({
  152.                     top: boton.offset().top + "px",
  153.                     left: (boton.offset().left + 20) + "px"
  154.                 })
  155.                 //muestro el calendario
  156.                 calendario.show("slow");
  157.                
  158.             }else{
  159.                 //es que el calendario ya se estaba mostrando...
  160.                 calendario.fadeOut("fast");
  161.                 calendario.fadeIn("fast");
  162.                
  163.             }
  164.            
  165.         }
  166.        
  167.         function muestraDiasMes(mes, ano){
  168.             //console.log("muestro (mes, ano): ", mes, " ", ano)
  169.             //muestro en la capaTextoMesAno el mes y ano que voy a dibujar
  170.             capaTextoMesAnoActual.text(nombresMes[mes] + " " + ano);
  171.            
  172.             //muestro los días del mes
  173.             var contadorDias = 1;
  174.            
  175.             //calculo la fecha del primer día de este mes
  176.             var primerDia = calculaNumeroDiaSemana(1, mes, ano);
  177.             //calculo el último día del mes
  178.             var ultimoDiaMes = ultimoDia(mes,ano);
  179.            
  180.             //escribo la primera fila de la semana
  181.             for (var i=0; i<7; i++){
  182.                 if (i < primerDia){
  183.                     //si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda
  184.                     var codigoDia = '<span class="diainvalido';
  185.                     if (i == 0)
  186.                         codigoDia += " primero";
  187.                     codigoDia += '"></span>';
  188.                 } else {
  189.                     var codigoDia = '<span';
  190.                     if (i == 0)
  191.                         codigoDia += ' class="primero"';
  192.                     if (i == 6)
  193.                         codigoDia += ' class="ultimo domingo"';
  194.                     codigoDia += '>' + contadorDias + '</span>';
  195.                     contadorDias++;
  196.                 }
  197.                 var diaActual = $(codigoDia);
  198.                 capaDiasMes.append(diaActual);
  199.             }
  200.            
  201.             //recorro todos los demás días hasta el final del mes
  202.             var diaActualSemana = 1;
  203.             while (contadorDias <= ultimoDiaMes){
  204.                 var codigoDia = '<span';
  205.                 //si estamos a principio de la semana escribo la clase primero
  206.                 if (diaActualSemana % 7 == 1)
  207.                     codigoDia += ' class="primero"';
  208.                 //si estamos al final de la semana es domingo y ultimo dia
  209.                 if (diaActualSemana % 7 == 0)
  210.                     codigoDia += ' class="domingo ultimo"';
  211.                 codigoDia += '>' + contadorDias + '</span>';
  212.                 contadorDias++;
  213.                 diaActualSemana++;
  214.                 var diaActual = $(codigoDia);
  215.                 capaDiasMes.append(diaActual);
  216.             }
  217.            
  218.             //compruebo que celdas me faltan por escribir vacias de la última semana del mes
  219.             diaActualSemana--;
  220.             if (diaActualSemana%7!=0){
  221.                 //console.log("dia actual semana ", diaActualSemana, " -- %7=", diaActualSemana%7)
  222.                 for (var i=(diaActualSemana%7)+1; i<=7; i++){
  223.                     var codigoDia = '<span class="diainvalido';
  224.                     if (i==7)
  225.                         codigoDia += ' ultimo'
  226.                     codigoDia += '"></span>';
  227.                     var diaActual = $(codigoDia);
  228.                     capaDiasMes.append(diaActual);
  229.                 }
  230.             }
  231.            
  232.             //crear el evento para cuando se pulsa un día de mes
  233.             //console.log(capaDiasMes.children());
  234.             capaDiasMes.children().click(function(e){
  235.                 var numDiaPulsado = $(this).text();
  236.                 if (numDiaPulsado != ""){
  237.                  elem.val(numDiaPulsado + "-" + (mes+1) + "-" + ano);                   calendario.fadeOut();
  238.                 }
  239.             })
  240.         }
  241.         //función para calcular el número de un día de la semana
  242.         function calculaNumeroDiaSemana(dia,mes,ano){
  243.             var objFecha = new Date(ano, mes, dia);
  244.             var numDia = objFecha.getDay();
  245.             if (numDia == 0)
  246.                 numDia = 6;
  247.             else
  248.                 numDia--;
  249.             return numDia;
  250.         }
  251.        
  252.         //función para ver si una fecha es correcta
  253.         function checkdate ( m, d, y ) {
  254.             // función por http://kevin.vanzonneveld.net
  255.             // extraida de las librerías phpjs.org manual en http://www.desarrolloweb.com/manuales/manual-librerias-phpjs.html
  256.             return m > 0 && m < 13 && y > 0 && y < 32768 && d > 0 && d <= (new Date(y, m, 0)).getDate();
  257.         }
  258.        
  259.         //funcion que devuelve el último día de un mes y año dados
  260.         function ultimoDia(mes,ano){
  261.             var ultimo_dia=28;
  262.             while (checkdate(mes+1,ultimo_dia + 1,ano)){
  263.                ultimo_dia++;
  264.             }
  265.             return ultimo_dia;
  266.         }
  267.        
  268.         function validarFechaEscrita(fecha){
  269.             var arrayFecha = fecha.split("-");
  270.             if (arrayFecha.length!=3)
  271.                 return false;
  272.             return checkdate(arrayFecha[1], arrayFecha[0], arrayFecha[2]);
  273.         }
  274.    });
  275.    return this;
  276. };

No se donde colocar esa validacion para que me escriba el 0 adelante,

Espero puedan ayudarme

Saludos