Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > HTML, Javascript y otros
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2023
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Problemas con un DatePicker al deshabilitar fechas

Buenas tardes a todos!!
Quería pediros ayuda con un problema con el siguiente código:
Código:
    <script>
        // Función para obtener las fechas entre dos fechas dadas
        function obtenerFechasEntre(fechaInicio, fechaTermino) {
            var fechas = [];
            var fechaActual = new Date(fechaInicio);
            var fechaTermino = new Date(fechaTermino);
            while (fechaActual <= fechaTermino) {
                fechaActual.setDate(fechaActual.getDate() + 1);
                fechas.push(fechaActual.toISOString().split('T')[0]);
            }
            return fechas;
        }        
          
        $(function() {
            let fechas = <?php echo $jsonArray; ?>;
            // Array para almacenar las fechas entre los rangos
            var unavailableDates = [];
            // Iterar sobre el array de fechas y obtener las fechas entre cada par
            for (var i = 0; i < fechas.length; i++) {
                var rango = fechas[i];
                var fechaInicio = rango[0];
                var fechaTermino = rango[1];
                var fechasEntreRango = obtenerFechasEntre(fechaInicio, fechaTermino);
                unavailableDates = unavailableDates.concat(fechasEntreRango);
            }

            $( "#datepicker1" ).datepicker({
            // defaultDate: "+1w",
                minDate: 0,
                changeMonth: true,
                beforeShowDay: function(date) {
                    var stringDate = $.datepicker.formatDate('yy-mm-dd', date);
                    return [unavailableDates.indexOf(stringDate) === -1];
                },
                onClose: function( selectedDate ) {
                    $( "#datepicker2" ).datepicker( "option", "minDate", selectedDate );
                },
                onSelect: function(){
                    $( "#datepicker2" ).datepicker( "option", "disabled", false );
                }
            });
            // Evito que el usuario use el teclado en datepicker1
            $("#datepicker1").keydown(function(e) {
                e.preventDefault();
            });
    
            $( "#datepicker2" ).datepicker({
            //  defaultDate: "+1w",
                changeMonth: true,
                beforeShowDay: function(date) {
                    var stringDate = $.datepicker.formatDate('yy-mm-dd', date);
                    return [unavailableDates.indexOf(stringDate) === -1];
                },
                onClose: function( selectedDate ) {
                    $( "#datepicker1" ).datepicker( "option", "maxDate", selectedDate );
                }
            });
            // Evito que el usuario use el teclado en datepicker2
            $("#datepicker2").keydown(function(e) {
                e.preventDefault();
            });
        });
    </script>
La idea básica es que el array unavailableDates tiene varias fechas almacenadas y deseo deshabilitar esas fechas en 2 DatePicker, llamados datepicker1 y datepicker2. Para ello, utilizo beforeShowDay.

Sin embargo, sólo me deshabilita las fechas en el primer DatePicker.

Muchísimas gracias de antemano por cualquier ayuda que podáis darme.

Un saludo.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #2  
Antiguo 09-06-2023
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Sino me equivoco, el código que se utiliza para lo que necesitas, es el que está situado en el evento "beforeShowDay" de los "data pickers". Efectivamente, en dicho evento, y, en ambos "data pickers", vemos las mismas líneas de código:

Código:
var stringDate = $.datepicker.formatDate('yy-mm-dd', date);
return [unavailableDates.indexOf(stringDate) === -1];
Eso es lo que "debería funcionar", y, de hecho, parece funcionar en el primer "data picker", pero, no en el segundo. Entonces, lo único que se me ocurre es que "$.datepicker" se esté refiriendo al primer "data picker", y, no al segundo.

No sé si en lugar de "$.datapicker" podrías probar con "$("#datepicker1")" y "$("#datepicker2")", en su lugar. Acaso, dentro del evento "beforeShowDay", puedas usar algo como "$(this)" para referirte al "data picker" en cuestión.

Pero es lo único que veo que puede estar pasando... lo que no significa que esté en lo cierto: que "$.datepicker" se refiera al primer "data picker", y, por eso ese "data picker" "funciona", y, no el segundo, incluso cuando el código del evento "es el mismo".

P.S. El primer "data picker" tiene una propiedad "minDate: 0", mientras que el segundo no la tiene... no sé si esto podría tener también algo que decir...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 09-06-2023 a las 10:49:53.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Deshabilitar y Habilitar seleccionar fechas de un TDateTimePicker rgstuamigo OOP 3 17-01-2009 14:42:47
problema datepicker anubis Varios 2 19-05-2007 04:14:13
Componente DatePicker para IntraWeb Isnel Internet 1 09-11-2006 17:35:40
problemas Fechas (now) jmlifi Varios 6 07-04-2005 18:57:18
Problemas con las fechas NuncaMas Varios 2 15-02-2005 17:33:03


La franja horaria es GMT +2. Ahora son las 16:16:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi