Foros del Web » Programando para Internet » Jquery »

Jquery UI DatePicker, colorear fechas en el calendario

Estas en el tema de Jquery UI DatePicker, colorear fechas en el calendario en el foro de Jquery en Foros del Web. Hola... Pues como dice el título, cómo puedo cambiar el color de ciertas fechas en el datepicker de jquery UI??? Es decir si hay eventos ...
  #1 (permalink)  
Antiguo 13/01/2011, 13:57
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Jquery UI DatePicker, colorear fechas en el calendario

Hola...

Pues como dice el título, cómo puedo cambiar el color de ciertas fechas en el datepicker de jquery UI???

Es decir si hay eventos el 20 de enero de 2010, que esa fecha aparezca en otro color en datePicker.

No logro encontrar algo que me permita hacerlo.

Saludos y gracias.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #2 (permalink)  
Antiguo 13/01/2011, 14:50
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Podrías utilizar el evento onBeforeShowDay, algo asi:

Código Javascript:
Ver original
  1. var events = [objDate1, objDate2, objDate3];
  2. $('#datepicker').datepicker({
  3.    ...             
  4.    beforeShowDay: function(date) {                     
  5.       return jQuery.inArray(date, events)
  6.           ? [true, 'css-class-to-highlight', 'tool-tip-text']
  7.           : [true, ''];
  8.    }
  9. });

Los eventos en este ejemplo deberían ser objetos date.

Nota: podrías extender datepicker y agregarle la funcionalidad.

Saludos.
  #3 (permalink)  
Antiguo 13/01/2011, 15:26
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Me auto-corrijo, con objetos la comparación no va a funcionar y inArray devuelve -1 cuando no encuentra coincidencias, te lo dejo con strings

Código Javascript:
Ver original
  1. var events = ['15-1-2011', '16-1-2011', '17-1-2011', '18-1-2011'];
  2.                
  3. $('#datepicker').datepicker({
  4.    ...
  5.    beforeShowDay: function(date) {                             
  6.       var current  = date.getDate() + '-' + (date.getMonth() + 1) + '-' + date.getFullYear();                                              
  7.       return jQuery.inArray(current, events) == -1
  8.              ? [true, '']
  9.              : [true, 'css-class-to-highlight', 'tool-tip-text'];                                              
  10.    }
  11. });

desconozco si hay algún date.format('d-m-Y') en jQuery para hacerlo mas prolijo.

Saludos y disculpas por el error.

Última edición por masterpuppet; 13/01/2011 a las 15:51
  #4 (permalink)  
Antiguo 14/01/2011, 06:57
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

el datepicker traer una utilidad

$.datepicker.formatDate('dd-mm-yy', new Date())

lo busqué porque me dió curiosidad jeje
  #5 (permalink)  
Antiguo 14/01/2011, 14:57
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Hola , perdón por la demora.

Masterpuppet, gracias por la ayuda.

Esto es lo que hice:
Código Javascript:
Ver original
  1. <script>
  2.     $(function() {
  3.         var events = ['15-1-2011', '16-1-2011', '17-1-2011', '18-1-2011'];
  4.    
  5.         $( "#datepicker" ).datepicker({
  6.             showWeek: true,
  7.             firstDay: 1,
  8.             beforeShowDay: function(date) {
  9.                 var current  = date.getDate() + '-' + (date.getMonth() + 1) + '-' + date.getFullYear();
  10.                 return jQuery.inArray(current, events) == -1
  11.                 ? [true, '']
  12.                 : [true, 'css-class-to-highlight', 'tool-tip-text'];
  13.             }
  14.         });
  15.        
  16.         /*$(".ui-datepicker-calendar td:contains('13')").addClass('ui-state-hover');
  17.         $(".ui-datepicker-calendar td:contains('25')").addClass('ui-state-hover');
  18.         $(".ui-datepicker-calendar td:contains('02')").addClass('ui-state-hover');*/
  19.     });
  20.     </script>


Código HTML:
Ver original
  1. <div id="datepicker"></div>

La verdad no sé por qué no cambia los colores de esas fechas. Sintácticamente está bien.

Dany_S, si no estoy mal, eso me pemite darle formato a la fecha si la voy a mostrar en un input (por decir algo), pero no me permite pasarle fechas para que las "coloree". Gracias

También intenté esto:

Código Javascript:
Ver original
  1. $(".ui-datepicker-calendar td:contains('3')").addClass('ui-state-hover')

Pero le problema con eso, es que me colorea todas las fechas que contengan 3

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com

Última edición por Carxl; 14/01/2011 a las 15:05
  #6 (permalink)  
Antiguo 14/01/2011, 16:05
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Que tal Carxl, deberia funcionar, lo tengo asi en el sandbox y va bien, te dejo un update con la sugerencia de Dany_s,


Código Javascript:
Ver original
  1. var events = ['15-1-2011', '16-1-2011', '17-1-2011', '18-1-2011'];
  2.  
  3. $('#datepicker').datepicker({
  4.     showWeek: true,
  5.     firstDay: 1,
  6.     beforeShowDay: function(date) {                                                        
  7.         var current = $.datepicker.formatDate('dd-m-yy', date);                    
  8.         return jQuery.inArray(current, events) == -1 ? [true, ''] : [true, 'css-class-to-highlight', 'tool-tip-text'];                                             
  9.     }
  10. });

podrias checkear la el valor de current, a ver si esta en el formato correcto, algo asi:

Código Javascript:
Ver original
  1. ...
  2. var current = $.datepicker.formatDate('dd-m-yy', date);
  3. console.log(current);
  4. ...
  #7 (permalink)  
Antiguo 14/01/2011, 16:19
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Déjame probar... ya te cuento :)

----

Tengo que colocar algún código fuera del que me pasaste? Debo hacer algo con ese return? Porque realmente yo probé y sigue sin andar :S No sé que podría ser.

La variable current tiene:

Código Javascript:
Ver original
  1. 27-12-2010
  2. 28-12-2010
  3. 29-12-2010
  4. 30-12-2010
  5. 31-12-2010
  6. 01-1-2011
  7. 02-1-2011
  8. 03-1-2011
  9. 04-1-2011
  10. 05-1-2011
  11. 06-1-2011
  12. 07-1-2011
  13. 08-1-2011
  14. 09-1-2011
  15. 10-1-2011
  16. 11-1-2011
  17. 12-1-2011
  18. 13-1-2011
  19. 14-1-2011
  20. 15-1-2011
  21. 16-1-2011
  22. 17-1-2011
  23. 18-1-2011
  24. 19-1-2011
  25. .
  26. .
  27. .
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com

Última edición por Carxl; 14/01/2011 a las 16:29
  #8 (permalink)  
Antiguo 14/01/2011, 16:50
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Me dió por cambiar esto:

Código Javascript:
Ver original
  1. return jQuery.inArray(current, events) == -1 ? alert('-1') : alert('No -1');

Y el log muestra lo siguiente:

Código log:
Ver original
  1. 27-12-2010
  2. 28-12-2010
  3. 29-12-2010
  4. 30-12-2010
  5. 31-12-2010
  6. 01-1-2011

Es como si no recorriera todo el array en cada comparación... creo Mi fuerte no es Jquery.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 14/01/2011, 16:59
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Vamos a descartar primero lo obvio, si exploras los elementos con firebug la clase no aparece asignada a los elementos ?.
Descartando esto, vamos a hacer otro debug:

Código Javascript:
Ver original
  1. ...
  2. beforeShowDay: function(date) {                                                        
  3.    var current = $.datepicker.formatDate('dd-m-yy', date);                    
  4.    console.log(current);
  5.    console.log(jQuery.inArray(current, events));
  6.    return jQuery.inArray(current, events) == -1 ? [true, ''] : [true, 'css-class-to-highlight', 'tool-tip-text'];                                              
  7. }
  8. ...

El segundo log te va a devolver -1 si no lo encuentra o la posición en la que esta.
  #10 (permalink)  
Antiguo 15/01/2011, 07:43
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Hola masterpuppet, cómo vas?

No te preocupes que la lógica está perfecta, lo que pasaba era una cuestión de css, los atributos css que tú colocaste no servian para mis CSS. Cambié las clases y funciona perfecto

Este es mi código:

Código Javascript:
Ver original
  1. <script>
  2.     $(function() {
  3.         var events = ['15-1-2011', '02-1-2011', '17-1-2011', '17-2-2011'];
  4.    
  5.         $( "#datepicker" ).datepicker({
  6.             beforeShowDay: function(date) {
  7.                 var current = $.datepicker.formatDate('dd-m-yy', date);
  8.                 return jQuery.inArray(current, events) == -1 ? [true, ''] : [true, 'ui-state-hover', 'ui-state-highlight'];
  9.             }
  10.         });
  11.     });
  12.     </script>

Eso fue, cambié los atributos css y voilá!

Muchas gracias!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #11 (permalink)  
Antiguo 17/01/2011, 09:03
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Hola de nuevo masterpuppet :)

Ahora que miré de nuevo el código, me surgió una duda:
Código Javascript:
Ver original
  1. return jQuery.inArray(current, events) == -1 ? [true, ''] : [true, 'ui-state-hover', 'ui-state-highlight'];

Sé que la instrucción:

Cita:
sentencia ? '' : '';
Es una manera abreviada para if/else (se usa también en php).

Pero lo que contiene es lo que me causa duda:

Cita:
? [true, ''] : [true, 'ui-state-hover', 'ui-state-highlight']
Estás declarando arrays? que estás haciendo en los 'true'. Entiendo que un reemplazo, pero no hayo la lógica de jquery. Podrías explicarme por favor un poco esas instrucciones?

Gracias!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #12 (permalink)  
Antiguo 17/01/2011, 09:28
Avatar de oscalber  
Fecha de Ingreso: octubre-2009
Ubicación: palmira
Mensajes: 103
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

hola a todos, no quise crear un nuevo tema por q tiene algo de similitud a este, yo lo que quiero es bloquear los dias sabados y domingos, ojala me puedan colaborar...

saludos..
  #13 (permalink)  
Antiguo 17/01/2011, 09:41
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Que tal Carxl, uno tiende a poner la solución sin explicar mucho, te pido las disculpas del caso, te comento:

esto: condition ? true : false se llama operador ternario

y con respecto a lo que retorna beforeShowDay, es un array, donde el primer parametro es si el dia es selectable(true|false), el segundo, es la clase para agregar al contenedor del dia y el tercero es el tooltip(para el hover).

Tendiendo esto en cuenta, cambiando un poco el script podrías agregar información de cada evento, y cuando el usuario haga hover sobre el día mostrar info de dichos eventos.

Saludos.
  #14 (permalink)  
Antiguo 17/01/2011, 09:56
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Cita:
Iniciado por oscalber Ver Mensaje
hola a todos, no quise crear un nuevo tema por q tiene algo de similitud a este, yo lo que quiero es bloquear los dias sabados y domingos, ojala me puedan colaborar...

saludos..
Para tu caso tiene noWeekends.

Saludos.
  #15 (permalink)  
Antiguo 17/01/2011, 10:36
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Cita:
Iniciado por masterpuppet Ver Mensaje
Que tal Carxl, uno tiende a poner la solución sin explicar mucho, te pido las disculpas del caso
Una cerveza y ya... xD

Cita:
Iniciado por masterpuppet Ver Mensaje
esto: condition ? true : false se llama operador ternario
Sí, lo conozco totalmente, como te comenté en mi post anterior, también se maneja en php.

Cita:
Iniciado por masterpuppet Ver Mensaje
y con respecto a lo que retorna beforeShowDay, es un array, donde el primer parametro es si el dia es selectable(true|false), el segundo, es la clase para agregar al contenedor del dia y el tercero es el tooltip(para el hover).
Pera que me perdí xD.

Esta fracción, qué hace particularmente?:
Código Javascript:
Ver original
  1. [true, '']

Si es seleccionable... qué hacen las '' (comillas simples) ??

Y la misma pregunta para:
Código Javascript:
Ver original
  1. [true, 'ui-state-hover', 'ui-state-highlight']

Con esa instrucción si me pierdo jeje

Gracias!!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #16 (permalink)  
Antiguo 17/01/2011, 10:58
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

Voy de nuevo, estamos de acuerdo con que devuelve un array de parametros que se van a utilizar a la hora de "pintar" el dia, bueno el primer parametro es si se puede seleccionar o no el dia, el segundo es la o las clases css para el wrapper del día(el td), lo mando vacio porque es un parametro obligatorio, lo que hace es pintar el td del dia con class='', lo podes checkar mirando el html del calendario, y el tercer parámetro es el tooltip, que al ser opcional cuando no hay eventos no lo devuelvo, si dejaste 'ui-state-highlight' como en el ejemplo, hace un hover sobre el dia que hay evento y vas a ver el title con el texto 'ui-state-highlight'.

Espero haber sido mas claro esta vez.

PD: ahora te contesto el otro post
  #17 (permalink)  
Antiguo 17/01/2011, 11:07
Avatar de oscalber  
Fecha de Ingreso: octubre-2009
Ubicación: palmira
Mensajes: 103
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Jquery UI DatePicker, colorear fechas en el calendario

muchas gracias lo solucione con css...


saludoss...

Etiquetas: calendario, colorear, datepicker, fechas
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 20:06.