Síganos en Facebook
Volver al Blog de Emenia

Elegir una fecha en un formulario con un calendario y jQuery

Escrito el por

En ocasiones necesitamos crear un formulario donde alguno de los campos requieren la selección de una fecha por parte del usuario, por ejemplo para la reserva de la habitación de un hotel, la compra de un billete de tren, etc..

La mejor manera de solicitar una fecha al usuario es a través de un calendario que se despliegue a la hora de introducir la fecha. Es lo que vamos a hacer en este ejemplo.

Para ello vamos a utilizar el plugin jQuery UI Datepicker.

Lo que vamos a conseguir es esto:

Para utilizarlo necesitamos:

1) jQuery, por supuesto:

1
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

2) jQuery UI:

1
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>

3) En cuanto a estilos, utilizaremos el jQuery UI CSS Framework (esta línea debería ir antes de las dos anteriores en nuestro código):

1
<link rel="stylesheet" type="text/css" href="css/jquery-ui-1.7.2.custom.css" />

Y sus iconos:

Si seguimos las instrucciones del plugin, vemos que utilizar el calendario para seleccionar una fecha es realmente sencillo. Sólo hay que escribir, en su forma más básica:

1
2
3
4
5
<script type="text/javascript">
$(document).ready(function() {
   $("#datepicker").datepicker();
});
</script>

Siendo en este caso “#datapicker” el id del input del formulario al que aplicamos el calendario:

1
<input type="text" name="datepicker" id="datepicker" readonly="readonly" size="12" />

Como veréis le hemos añadido el atributo readonly para que no pueda ser modificado el contenido del input por el usuario, es decir, que se quede la fecha elegida sin poder alterarla manualmente. Aunque algunos autores lo incluyen, es probable que sea mejor no incluirlo, ya que si Javascript está desactivado no podríamos escribir nada en el input.

Si unís todo el código anterior veréis que el calendario sale en inglés. Para ponerlo en Castellano (también se puede poner en Catalán o en Euskera) tenemos los archivos de localización.

En concreto, para que esté en Castellano:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
jQuery(function($){
	$.datepicker.regional['es'] = {
		closeText: 'Cerrar',
		prevText: '&#x3c;Ant',
		nextText: 'Sig&#x3e;',
		currentText: 'Hoy',
		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
		'Jul','Ago','Sep','Oct','Nov','Dic'],
		dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
		dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
		weekHeader: 'Sm',
		dateFormat: 'dd/mm/yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['es']);
});

Vamos a unir ya todo el código antes de ver posibles modificaciones. Podéis ver este código funcionando en esta demostración y podéis bajar el código aquí.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
<title>Emenia Demo - Uso de jQuery Data Picker</title>
<link rel="stylesheet" type="text/css" href="css/jquery-ui-1.7.2.custom.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript">
jQuery(function($){
	$.datepicker.regional['es'] = {
		closeText: 'Cerrar',
		prevText: '&#x3c;Ant',
		nextText: 'Sig&#x3e;',
		currentText: 'Hoy',
		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
		'Jul','Ago','Sep','Oct','Nov','Dic'],
		dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
		dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
		weekHeader: 'Sm',
		dateFormat: 'dd/mm/yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['es']);
});
 
$(document).ready(function() {
   $("#datepicker").datepicker();
 });
</script>
</head>
<body>
<h1>Uso de jQuery Data Picker</h1>
<form action="">
  <label> Seleccionar Fecha:</label>
  <input type="text" name="datepicker" id="datepicker" readonly="readonly" size="12" />
</form>
</body>
</html>

Ahora vamos a ver algunas formas de personalizar el calendario. Muchas de las opciones las hemos utilizado ya en el código de localización. La lista completa está en http://docs.jquery.com/UI/Datepicker

- altField y altFormat nos permiten guardar la fecha elegida en otro campo con un formato diferente, por ejemplo si lo queremos mostrar al usuario con un formato pero que nos llegue a nosotros con otro diferente.

- appendText, si queremos que se muestre un texto al lado del input, para una mejor comprensión para el usuario:

1
2
3
    $(document).ready(function() {
           $("#datepicker").datepicker({ appendText: ' Haga click para introducir una fecha' });
        });

Ver una demo con appendText

-autoSize, si lo ponemos en true se ajustará el input para dar cabida a la fecha introducida.

- numberOfMonths, para elegir el número de meses que van a salir. Si ponemos numberOfMonths:2, por ejemplo, saldrán dos meses. Esto lo aconsejan algunos expertos en usabilidad ya que hay más opción donde elegir de un solo vistazo. Veamos un ejemplo de numberOfMonths , donde se añade al anterior de appendText para ver cómo se unen dos opciones.

- Si queremos que el calendario se despliegue no al hacer click sobre el input sino sobre un botón adjunto (por ejemplo, una imagen de un calendario pequeño, como tienen muchas webs que habréis visto), utilizaremos las opciones buttonImage, buttonImageOnly y showOn:

1
2
3
4
5
$("#datepicker").datepicker({
   showOn: 'button',
   buttonImageOnly: true,
   buttonImage: 'images/datepicker.png'
});

donde datapicker.png es un icono de un calendario. Al hacer click sobre él, se despliega el calendario. Veamos un ejemplo.

- dateformat, para cambiar el formato en el que se pega la fecha al input. En la demo está en dateformat: ‘dd/mm/yy’. Otra opción es por ejemplo ‘DD, MM, d, yy’ . Lista completa de formatos de fecha.

- maxDate y minDate, para poner una fecha máxima y otra mínima (supongamos que queremos que sólo salgan los meses de Junio a Octubre):

1
2
3
4
5
6
7
8
$(document).ready(function() {
   $("#datepicker").datepicker({
       minDate: new Date(2010, 5, 1),
       maxDate: new Date(2010, 9, 30),
       dateFormat: 'dd/mm/yy',
       constrainInput: true,
	});
});

Veamos un ejemplo de maxDate y minDate.

- buttonText, Si queremos que se abra el calendario al hacer click sobre un botón al que le ponemos nosotros el texto:

1
2
3
4
5
$(document).ready(function(){
  $("#datepicker").datepicker({
       showOn: 'button',
       buttonText: "Seleccionar" });
 });

Veamos una demo del uso de buttonText.

- showAnim, si queremos cambiar el efecto con el que se muestra el calendario

1
2
3
4
5
$(document).ready(function(){
   $("#datepicker").datepicker({
    showAnim: 'fadeIn'
    });
});

Veamos una demo del uso de showAnim. Podemos usar como efecto ‘show’ (por defecto), ‘slideDown’, ‘fadeIn’, o cualquiera de los efectos para mostrar/ocultar de jQuery UI.

- changeMonth permite mostrar una lista desplegable de meses para poder ir con mayor rapidez al mes deseado:

1
2
3
4
5
$(document).ready(function(){
   $("#datepicker").datepicker({
    changeMonth: true
    });
});

Veamos una demo del uso de changeMonth

Id probando todas las opciones de la página del plugin para ver las distintas opciones.

Por último, destacar una variación aportada por David Walsh en su artículo jQuery UI DatePicker: Disable Specified Days, para desactivar días concretos (por ejemplo, días que hayan sido ya reservados de un hotel y por lo tanto no puedan ser ya escogidos). También en su ejemplo se ve como desactivar los fines de semana y días de fiesta.

Sigue a Juan en Twitter, en Google+, o suscríbete al RSS Feed de Emenia para estar al día de nuestros artículos.

Artículos relacionados

118 Comentarios a Elegir una fecha en un formulario con un calendario y jQuery

  1. Juan dice:

    Muchas gracias por el calendario era justo lo que necesitaba… ;)

  2. Ale dice:

    Ammm ya tengo un calendario muy parecido a este
    el problema es que quiero quitarle los fines de semana
    pero la verdad no tengo ni la mas minima idea…
    y estoy muy verde en esto de la programacion
    auxilio!!!!!!

  3. benito dice:

    Buenas ! me ha encantado esta informacion ! la he utilizado en mi proyecto pero tengo una duda! tengo 2 input y el calendario solo me sale en uno de ellos , como podria hacerlo para que me lo aplicara a los 2 imput ? he cambiado el id y nada .. :S Gracias !

  4. pake dice:

    hola ke tal kisiera saber si tienes un datepicker con funcion live es decir poner varios datepicker (id) con una sola funcion y no una funcion para cada uno

  5. Oscar Canchica dice:

    Excelente información, muchas gracias por el aporte, me fue de gran ayuda para adaptarlo a un proyecto personal… Saludos…

  6. Juan Pablo dice:

    Gracias! la explicación esta perfecta! solo he tenido un problema.
    No he podido quitarle la animación show() que tiene al abrir y cerrar el calendario…
    Alguien me podría ayudar??

  7. Mar dice:

    Muchas gracias por la info, ya tengo el calendario funcionando.
    Sin embargo he probado lo de deshabilitar dias concretos y no me funciona.
    Es más, no me va ni el ejemplo de la web q dices de David Walsh en su artículo jQuery UI DatePicker: Disable Specified Days, para desactivar días concretos
    Alguien lo ha probado?
    Un saludo y gracias

  8. Pingback: Navegando ando… 1 Octubre | soy un zote

  9. Facu dice:

    Genialllllllllll sos un genio me solucionaste la vida… estaba buscando hace años esta info

    Gracias de Verdad

  10. Facu dice:

    Hola, quiero usar este metodo para un formulario de reserva de hotel… el problema es q cuando pongo el Indicador de Fecha de Enrada y se abre el calendario, cuando en la otra celda quiero poner el calendario de salida no me funciona… es decir solo se abre el de entreda… podrían ayudarme??? Estaría muy agradecido ! este es el codigo, no donde se pone o como poner para q se abra el calendsario de salida, es decir tiene uno de entrada y otro de salida… Gracias !:

    Untitled Document

    Nombre y
    Apellido

    Teléfono

    Email de
    Contacto
    País y Región
    o Ciudad

    Entrada

    Salida

    Adultos

    Niños

    jQuery(function($){
    $.datepicker.regional['es'] = {
    closeText: ‘Cerrar’,
    prevText: ‘<Ant’,
    nextText: ‘Sig>’,
    currentText: ‘Hoy’,
    monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
    'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
    monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
    'Jul','Ago','Sep','Oct','Nov','Dic'],
    dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],
    dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],
    dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],
    weekHeader: ‘Sm’,
    dateFormat: ‘dd/mm/yy’,
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: false,
    yearSuffix: ”};
    $.datepicker.setDefaults($.datepicker.regional['es']);
    });

    $(document).ready(function() {
    $(“#datepicker”).datepicker();
    });

    Fecha Entrada

    >>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    >>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Ninguno

    Escriba su Consulta

    • Juan Diaz-Bustamante dice:

      Hola,

      Ten en cuenta que para que funcione con dos inputs distintos supongamos que uno tiene un id=”llegada” y el otro un id=”salida”. Entonces tienes que inicializar datepicker para cada input. Por ejemplo:

      $(document).ready(function() {
          // obtenemos la fecha actual
          var date = new Date();
          var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
          // inicializamos datapicker para cada input en este caso con la fecha activa a partir del dia de hoy y con el formato de fecha dd/mm/yy                
          $("#llegada").datepicker({minDate: new Date(y, m, d), dateFormat: 'dd/mm/yy'});
          $("#salida").datepicker({minDate: new Date(y, m, d), dateFormat: 'dd/mm/yy'});
       });
  11. Barbara dice:

    Hola, necesitaria usar el datepicker en un formulario cargado dinamicamente, se podría?? por mas que lo intento no me sale…

    Muchas gracias

  12. Barbara dice:

    Otra cosa, una vez seleccionado una fecha se puede quitar con el input en readonly??
    Gracias

  13. Barbara dice:

    Ya encontre la forma de usar el datepicker en un formulario cargado dinámicamente:

    $(‘#datepicker’).live(‘focusin’,function(e){
    e.preventDefault();
    $(“#datepicker”).datepicker();
    });

    A ver si sabeis como borrar una fecha si el input esta en readonly. Es que quiero dejarlo en readonly porque no quiero que se pueda poner la fecha a mano ya que se puede poner mal la fecha…

    Gracias

  14. Pingback: Der3des – Blog de Juanla » Añadir un calendario a tus formularios

  15. Pingback: Añadir un calendario a tus formularios con jQuery y Datepicker

  16. dontysk dice:

    Hola Bárbara , yo tengo inputs con la clase .fecha que se crean dinámicamente con Jquery dándale a Añadir campo, pero no me funciona lo que comentas:
    $(‘.fecha’).live(‘focusin’,function(e){
    e.preventDefault();
    $(“.fecha”).datepicker();
    });

    Además , ¿eso tendría que ponerlo en $(document).ready(function() o a continuación de la función que crea el nuevo campo.?

    Mil gracias

  17. guillermo dice:

    Hola yo necesito ponerlo en un formulario que al armarse dinamicamente puede poner mas de una campo de fecha, de uno a 5 alguien puede ayudarme?
    se le podria mandar el Id del campo a la funsion?

    saludos

  18. guillermo dice:

    ya me repondi solito jajaja

    $(document).ready(function() {
    $(“.CF”).datepicker();
    y

    jaja saludos

  19. Pingback: Admin1234 » Blog Archive » Añadir un calendario a tus formularios con jQuery y Datepicker

  20. Mi calendario muestra por default la fecha del dia ejemplo: 19/FEB/2011, he utilizado minDate: new Date(2011, 1, 19) y asi puedo restringir que el usuario no pueda elegir una fecha anterior al dia de hoy, pero que pasa si un usuario entra el dia 25 de febrero del 2011 y elige como fecha para que se le entregue un pedido el dia 23/FEB/2011, es obvio que esa fecha ya paso. La cuestion es que no quiero tener que especificar cada dua la fecha minima en el codigo de mi pagina. Entonces como hacemos para que el usuario no pueda elegir una fecha anterior al dia de hoy?

    • Perdon, no habia leido todos los comentarios, ya lo habian resuelto Juan Diaz-Bustamante
      $(document).ready(function () {
      // obtenemos la fecha actual
      var date = new Date();
      var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
      // inicializamos datapicker para cada input en este caso con la fecha activa a partir del dia de hoy y con el formato de fecha dd/mm/yy
      $(“#entrada”).datepicker({ minDate: new Date(y, m, d), dateFormat: ‘dd/mm/yy’ });
      $(“#salida”).datepicker({ minDate: new Date(y, m, d), dateFormat: ‘dd/mm/yy’ });
      });

      • Manuel Alonso dice:

        Bien. ya se como puedo deshabilitar fechas de los dias anteriores al dia de hoy. Pero que pasa si lo que quiero es deshabilitar los dias anteriores a los de una fecha específica que tambien ha sido introducida en otro input anterior. No se si me dejo entender. lo que pasa es que hago una pagina en la cual primero se ingresa en un input una fecha y en el otro debo ingresar otra fecha cualqueira pero que sea mayora a la primera fecha ingresada. Espero puedan ayudarme. Garcias

  21. En el comentario anterior ya esta resuelto como restringir que el usuario no pueda elegir una fecha anterior al dia de hoy, la pregunta de ahora es siguiendo esa mia linea de ejemplo que el usuario no pueda elegir una fecha al dia de hoy, Pregunta: Como puedo hacer para que los dias Miercoles, Sabado y Domingos no puedan ser elegidos ni como fecha de entrada ni como fecha de salida?

  22. Juan Diaz-Bustamante dice:

    Hola Carlos,

    Prueba con beforeShowDay. Por ejemplo, para deshabilitar Miércoles, Sábados y Domingos:

    1
    2
    3
    4
    5
    
               $("#datepicker").datepicker({ showOn: 'button',
    buttonImage: 'images/datapicker.png',
    buttonImageOnly: true,
    beforeShowDay: function(date){ return [date.getDay() == 1 || date.getDay() == 2 || date.getDay() == 4 || date.getDay() == 5,""]} });
            });

    Para deshabilitar sólo los fines de semana tienes noWeekends. Siguiendo con el mismo ejemplo:

    1
    2
    3
    4
    5
    
               $("#datepicker").datepicker({ showOn: 'button',
    buttonImage: 'images/datapicker.png',
    buttonImageOnly: true,
    beforeShowDay: $.datepicker.noWeekends })
    });
    • ¡Muchas gracias por éste sitio y por asesorar a los que no tenemos tanta experiencia en programación!
      Me ha sido de mucha utilidad éste plugin y la opción de deshabilitar fines de semana.

      Gracias por todo y a todos los que aportan.

    • Manuel dice:

      Necesito ayuda. ya se como puedo deshabilitar fechas de los dias anteriores al dia de hoy. Pero que pasa si lo que quiero es deshabilitar los dias anteriores a los de una fecha específica que tambien ha sido introducida en otro input anterior. No se si me dejo entender. lo que pasa es que hago una pagina en la cual primero se ingresa en un input una fecha y en el otro debo ingresar otra fecha cualqueira pero que sea mayor a a la primera fecha ingresada. Espero su ayuda. Garcias

  23. Reyeryck dice:

    necesito ayuda quiero implemetar un calendario q este siempre visible, y q al seleccionar una fecha del mismo me muestre en un label, ayudenme porfa

  24. moy dice:

    muchas Gracias por este tipo de ayuda de antemano agradecido de todo corazón, Dios te bendiga y hechale muchas ganas por que no muchos se prestan para hacer este tipo de trabajo y darlos a las personas que quizá un día lo ocupen. :D

  25. carolina dice:

    Hola a todos gracias por esa valiosa explicación pero quisiera pedir auxilio

    ya tengo el calendario pero no se como resaltar los dias en que se ha creado una fecha desde la base de datos agradeceria mucho cualquier ayuda
    gracias

  26. Federico dice:

    Hola, antes de nada felicitaros por el tutorial que estais montando entre todos. Bueno, mi problema es que hoy día 28 de febrero dá error el calendario si le pones como fecha mínima hoy y por ejemplo máxima dentro de 5 días.
    La fecha mínima que pone es el 28 de marzo.
    Gracias

  27. Jesus dice:

    Buenas tardes, ante todo decir que es maravilloso poder contar con estas explicaciones tan elaboradas y tan bien explicadas. Pues bien, necesito un poco de ayuda y es que si pongo el link del css no me lo coje y ademas provoca que no me salga el calendario.
    ¿Alguna sugerencia? Muchas gracias.

    • Juan Diaz-Bustamante dice:

      Gracias Jesús,

      ¿Te refieres al enlace a tu hoja de estilos? ¿Cómo lo tienes puesto?

      • Jesus dice:

        Muchas gracias por la rapidez en contestar. Al final lo he resuelto, aunque supongo que no me cogia el css debido a que me habia bajado una version posterior. Poniendo el css jquery-ui-1.7.2.custom.css que me he bajado ya me va perfectamente, la que tenia creo que era la 8.2 y no me ponia los estilos.

  28. Sergio dice:

    Buenas tardes agradezco haber compartido este material entiendo que a mas de uno le fue de mucha utilidad, preciso me comenten si alguien pudo correr esta utilidad para que guarde en una variable el valor ingresado al datapicker y posteriormente valide en una BD si el valor ingresado esta disponible.
    Muchas gracias de antemano por lo todo lo brindado en este espacio.
    Saludos.

  29. David dice:

    hola que tal yo tenia aplicado este calendario a uno de los formularios pero cambie el estilo del formulario con javascript y ya no me jala el calendario que podria ser ????}

  30. Jorge dice:

    Hola buen Tutorial del calendario, muy buena explicacion

    Ya modifique algo el calendario que se muestra pero, solo tengo una duda como hago para que el usuario pueda seleccionar el formato de la fecha, es decir si el usuario elige 24/06/2011 como hacer para que el decida elegir si separar la fecha por “guion” , ” punto” , “diagonal” o “junta” (ej: 24-06-2011, 24.06.2011, 24062011, etc)

    Espero me puedan ayudar gracias
    salu2

  31. Gonzalo Meza dice:

    Buenas Tardes acabo de implementar el calendario lo integre con php para validar los rangos de fechas funciona bien lo del rango peor me pasa un detalle en IE no me carga el calendario por lo menos en el IE7 y IE8 no carga hayq habilitar la compatibilidad eso porque yo lo se pero personas normalitas no van a saber que debo ajustar ?

    Parte del codigo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    jQuery(function($){
    	$.datepicker.regional['es'] = {
    		closeText: 'Cerrar',
    		prevText: '&#x3c;Ant',
    		nextText: 'Sig&#x3e;',
    		currentText: 'Hoy',
    		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
    		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
    		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
    		'Jul','Ago','Sep','Oct','Nov','Dic'],
    		dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
    		dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
    		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
    		weekHeader: 'Sm',
    		dateFormat: 'yy-mm-dd',
    		firstDay: 1,
    		isRTL: false,
    		showMonthAfterYear: false,
    		yearSuffix: ''};
    	$.datepicker.setDefaults($.datepicker.regional['es']);
    });
    	   $(document).ready(function() {
    		   $("#datepicker").datepicker({
    			   minDate: new Date(, , ),
    			   maxDate: new Date(, , ),
    			   dateFormat: 'dd-mm-yy',
    			   constrainInput: false,
    			});
    		});
  32. Fernando dice:

    Hola, tengo una consulta que no logro dilucidar,.
    El plugin funciona perfecto,. pero por algún motivo sale más grande, al tamaño me refiero, que en el ejemplo,.

    Para chequear subi el ejemplo de la página a mi servidor y se ve bien,. No entinedo cual es el error,..

    Saludos
    Fernando,….

  33. Fernando dice:

    Una consulta ¿Cómo hago para deshabilitar los días pasados? O sea, que me permita seleccionar desde el hoy en adelante.

    Saludos
    Fernando,..

  34. Mireya dice:

    Excelente el ejemplo, pero ¿como puedo modificar el ejemplo, para agregar mas de 1 calendario en mi sitio? , no me resulta :(

    Gracias

  35. Alecore dice:

    Una consulta como puedo bloquear dias especificos para que no se puedan seleccionar

  36. pedro dice:

    una pregunta quiero marcar dias especificos en el el calendario como le podria hacer alguna idea
    lo que hago es una agenda y estoy usando mysql y php para lo de la base de datos y conexiones
    lo que quiero hacer es que si a mi me marca automaticamente el dia 30 de julio
    tambien me marque otras fechas que tambie haya seleccionado anterorior mente como un dia ocupado por ejemplo con algun color que haga la diferencia entre los otros dias

  37. jose dice:

    primero felecitacion Juan Diaz por el tutorial, esta bien explicado lo puse a practica y m funciono; pero tengo una preguna??????????, es cuando pongo otro libreria como este:

    para hacer algunas funciones no me lo ejecuta este escript; pero si el calendario: ¿cual es el problema? que este script q te pongo no soprta a al calendario o como es??? gracias por tu respuesta……………………….

  38. francisco dice:

    Buenas taredes.
    Mi consulta es:
    como puedo pasar los inputs de 2 fechas a una BD en Oracle.
    Gracias Juan, excelente tuto %` ]

  39. Yo queria realizar un filtro para una consulta SQL y encontre este sitio, esta muy bueno el estilo que crearon, ahora cuando quise realizar o más bien aplicar el efecto fecha a mas de un imput no lo lograba, lei los post anteriores, pero lo solucione cambiando
    la ‘#efecto’ por una de class ‘.efecto’ y a los imput le di la clases class=”efecto”.

    Ejemplo:

    1
    2
    3
    
    $(document).ready(function() {
       $(".efecto").datepicker();
     });

    ————

    Fecha Inicio:

    Nombre

    fecha:

    ——-

    saludos

    • Juan Diaz-Bustamante dice:

      Hola Maximiliano,

      Yo creo que ha salido mal el código. Mira debajo del área de texto qué etiquetas HTML poner antes y despues del código para que se vea bien. Gracias.

  40. Samuel Aguirre dice:

    Verdaderamente gracias por la ayuda, ya lo habia visto en ingles y me costo mucho entenderlo, pero gracias a ustedes fue mas facil y sobre todo me di cuenta de algunos comandos que no habia entendido…!! gracias…!!

  41. Jonathan dice:

    Hola que ta todos… la verdad no he podido mostrar calendario en varios input cargados dinamicamente, agradeceria si alguien me ayudara he intentado de todo, ya he leido sus comentario pero aun no puedo…seria mucho pedir alguien me pasara como hacerlo

  42. Jonathan dice:

    Si no es mucho pedir guillermo yo quiero hacer lo mismo que tu. podrias decirme que codigo usaste para agregar el input que con el que tengo no me a leido los calendarios

  43. Joaquín Salgado dice:

    Sólo quiero dar las gracias al creador o creadores de esta página tan bien trabajada y estructurada. Y otro gracias por responder a todos los que exponen sus dudas, hecho que no es muy común por desgracia.

    No me canso de repetirlo, un gran trabajo, enhorabuena.
    JSA

    • Juan Díaz-Bustamante dice:

      Gracias Joaquín!

      Aunque he de reconocer que no contesto tanto como debería, sobre todo ultimamente, pero es que estoy a tope y no encuentro tiempo para hacerlo!

  44. Juan Andrade dice:

    Gracias por todos los aportes. Ya tengo trabajando el calendario, pero quisiera agregarle la funcionalidad siguiente, a ver si es posible con jquery:

    Tengo 2 input text, uno de fecha inicial y otro de fecha final, deseo que cuando el usuario seleccione la fecha inicial, sea cual sea el día, en el input text se ponga automaticamente la fecha inicial del mes, y caso contrario con la fecha final, donde deseo lo opuesto, que sea cual sea la fecha elegida, se pogan el último día del mes elegido.

    Se puede hacer eso desde jquery y este calendario.

    Gracias por el tutorial, está muy bueno, espero me puedan responder.
    Saludos.

  45. Javier dice:

    Hola, excelente estoy muy contento con tu aporte !! solo quiero hacerte una consulta, aplique el script a mi formulario pero para indicar fecha de nacimiento, no se como hacer para que buscar una fecha por año sea mas facil, osea, sale 12 oct 2011 me tardo mucho y tengo que hacer muchos clicks en atras para llegar a 4 jun 1995 :( sera que se puede? no se como agregar otro boton para pasar año, muchas gracias ! :D

  46. alEx dice:

    Hola maestro, gracias por el aporte, ya ves que pasan los meses y aún seguimos descubriéndolo! :)
    Mi duda es bassstante elemental pero no soy de código, cuando veo cosas que no he visto antes me bloqueo! :/
    En fin, he implementado sin problemas el datepicker, selecciono fecha, lo personalizo, hasta aquí perfecto.
    ME falta lo más importante (que impotencia!!!) cómo rescato el valor de la fecha escogida para enviarlo en el formulario? He probado varias cosas pero ninguna funciona y no puedo creer que lo más elemental me cueste. como trato esa variable para enviarla junto con el resto de las vars del form??? Seguro la respuesta es muy simple, pero soy incapaz de encontrarla :( (
    Grazie!!! :) )

  47. Juan Ramirez dice:

    Hice todo y me sale, el calendario, pero sin los iconos, he puesto algo mal?
    o donde descargo los iconos?

  48. Antonio dice:

    Hola, buen calendario.
    Como podria hacerle para poder añadir una lista desplegable de años

  49. Gonzalo dice:

    Excelente tutorial, y explicación me sirvió mucho para mi proyecto gracias !!

  50. JORGE dice:

    como le hago para que al momento de poner el año me saque un rango por ejemplo de 01/01/1950 a 31/12/2015

  51. Jordi dice:

    Muchas gracias!
    Genial tutorial y de gran utilidad!

    Facilidad de uso y de entendimiento!

    Gracias de nuevo!

  52. julio dice:

    Pregunta

    quiero poner como rango de fecha lo siguiente:

    1
    2
    3
    4
    
    minDate: new Date(1950, 1 - 1, 1),
    	dateFormat: 'dd/mm/yy',
        maxDate: new Date(f.getFullYear(), f.getMonth(), f.getDate()),
    	dateFormat: 'dd/mm/yy',

    sin embargo solo me maneja hasta el año 2011 que modifico e intentado con menores a 2001 y si funciona

  53. Roberto Sánchez dice:

    Hola, no soy muy experto pero he colocado el calendario en mi apliación y funciona perfectamente, gracias a todos.

    Mi problema llega una vez que tengo la fecha ¿cómo puedo utilizarla dentro de mi código? Es decir, he elegido esa fecha para algo pero no sé cómo puedo rescatarla. Sé que puede ser una duda básica pero no soy capaz.

    Gracias de antemano.

  54. Cristina dice:

    ¡Hola!
    Yo no tengo ni idea de programación pero la verdad es que siguiendo los pasos he conseguido insertar el calendario sin problema. Mi duda es la siguiente, ¿cómo puedo hacer para marcar una fecha del calendario y que lleve a un evento o acontecimiento determinado?
    Por ejemplo, quiero que el día 12 de diciembre quede marcado y el usuario al clickar en él vea que está marcado porque ese día hay una actuación en algún sitio.
    Espero haberme explicado bien, gracias :)

    • juan dice:

      si quieres sientate a esperar compadre aver como se resuelve solo ya que si no sabes programacion eso es parte de, y la verdad esta canijo que alguien les resuelva la vida de esta forma entonces lo que os recomiendo es que aprendan programacion o que contraten a un programador

      chaosito….

  55. Genial !!!

    Muchas Gracias por tu Trabajo Juan, he seguido tu tutorial y funciona 100%

    Un Saludo desde Barcelona ;)

  56. Mcgus dice:

    excelente tutorial.
    tengo una duda, tengo un form con dos fechas, una de inicio y una de finalizacion, como hago para q la segunda fecha siempre sea mayor q la primero y no me deje seleccionar otra menor a la primera.

    gracias

  57. adri dice:

    hola
    quisiera utilizar este calendario para incluir la fecha de nacimiento, pero no encuentro la manera de listar los años, quisiera saber si alguien me puede ayudar….

  58. Gilberto dice:

    Muchas gracias por este Calendario, me fue de gran utilidad, tambien me gustaria saber como listar los años como tambien pregunta adri, sin embargo, ya con esto es mas que suficiente, gracias otra vez!

  59. Edgar dice:

    Muchas gracias por compartir ese ejemplo tan bueno y util, a mi en lo particular me fue de gran ayuda. Gracias por compartir.

  60. rafael canto dice:

    hola oye, como puedo cambiar la apariencia del datepicker sin tener que modificar el css ??

  61. Dayb dice:

    Buenas, primero que todo muy buen aporte este, es de mucha ayuda.

    Para mi sitio web ya tengo implementado el datepicker, pero tengo el siguiente inconveniente, el usuario selecciona la fecha pero de acuerdo a la fecha seleccionada debo realizar unas consultas en mi base de datos en mysql, cómo hago para parar el valor de esa fecha que está en javascript a la páina php en la que está el datepicker???

    He intentado con el evento onSelect y sé que dateText es el que me almacena el valor de la fecha pero no logro retornarlo como value para un input hidden que se supone recibirá el valor.

    ¿Es posible hacerlo de esta forma o existe un método propio o pero aún no se puede hacer esto?

    Muchas gracias

  62. edison dice:

    buenas tardes…amigo como implemento varios el datepicker en varios campos de un formulario tengo 5….

  63. Lucero dice:

    Gracias! por colocar este articulo, es justamente lo que andaba buscando…
    en las respuestas que das tan amablemente, Juan Diaz a alguien le diste este enlace..

    1
    
    http://hackingon.net/files/jquery_datepicker/open.htm

    y ahi el usuario puede hacer click en el campo del input e introducir fecha “manualmente”, eso, como se puede evitar ??

    T eagradezco muchisimo tus resPuestas Juan.

  64. Lucero dice:

    Juan! se que estoy molestando mucho tu tiempoo…
    deseo una enseñanza maestro, como se puede hacer para modificar el año limite, me interesa tenerlo desde 1994 y no he encontrado una forma de como hacerlo, imagino que en las apis de google esta eso, pero esa es mi imaginacion.. que puedes decirme al respecto ?

    Agradecida
    Lucero

  65. Anonimo dice:

    Muchas Gracias! tras mucho buscar tu ayuda me ha venido perfecta!!

  66. Oscar Sanchez dice:

    Buenas noches.

    Excelente calendario pero quisiera saber si es posible colocar una forma algo donde podamos escoger un año luego el mes y por ultimo el día de de un forma mas rápida ya que los botones de retroceso serian algo traumatico para alguien que hubiera nacido en 1980 jejeje. Seria algo asi como changeMonth: true pero seria changeYear: true. Es mi presunta. Seria bueno saber como realizar para modificar.

    Gracias

  67. uriel dice:

    te felicito me sirvio de mucho

  68. Jorgex dice:

    hola tengo el sig codigo quisiera saber como enlazar con un boton de envio que me muestre en una tabla los registros(de mi bd(mysql)) que se encuentren entre el rango de fechas que introduje en los campos(fecha_inicio,fecha_final) GRACIAS POR SUS RESPUESTAS

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    jQuery(function($){
    	$.datepicker.regional['es'] = {
    		closeText: 'Cerrar',
    		prevText: '&#x3c;Ant',
    		nextText: 'Sig&#x3e;',
    		currentText: 'Hoy',
    		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
    		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
    		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
    		'Jul','Ago','Sep','Oct','Nov','Dic'],
    		dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
    		dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
    		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
    		weekHeader: 'Sm',
    		dateFormat: 'dd/mm/yy',
    		firstDay: 1,
    		isRTL: false,
    		showMonthAfterYear: false,
    		yearSuffix: ''};
    	$.datepicker.setDefaults($.datepicker.regional['es']);
    });
     
            $(document).ready(function() {
               $("#fecha_inicio").datepicker();
     
            });
    		 $(document).ready(function() {
               $("#fecha_final").datepicker();
     
            });

    Seleccionar Fecha de inicio:

    Seleccionar Fecha final :

  69. sergio dice:

    hola, me sale el calendario en ingles como lo pongo en español???

  70. wolfred dice:

    buenos dias, utilice el calendario en una pagina en php y me funciono todo bien, pero tiene un detalle, el me carga sin la parte de los baner, es decir, se ve sin ninguna estetica. estoy haciendo un proyecto y pues no puedo dejar esa parte de manera visual tan fea. para saber si hay que cargar algo en especial?. gracias de antemano por responder

  71. Kehos dice:

    Gracias por la aportación! :)

  72. emersongonzal86 dice:

    Hola Juan excelente tuto… me ha ayudado mucho en mi proyecto… tengo ahora un problema qusiera que me ayudaras… resulta que tengo una pagina generada de una consulta de php y mysql que es una lista de chequeo, en esa lista tengo una fecha que esta programada para realizar una actividad y un campo en el cual colocan la fecha real de realizacion de la actividad, pero esta no puede superar una semana luego de la programada, es decir si se programo para el dia 7 de enero el calendario debe mostrar la semana correspondiente para el 1 al 7 de enero y las demas fechas estar bloqueadas. ya tengo el calendario de este tuto en en campo fecha para cargar la fecha real de realizacion de la actividad y bloquea una semana hacia a tras pero apartir de la fecha actual. mi problema consiste en que la fecha de realizacion es una fecha extraida de la base de datos de mysql y varia en cada registro. no se como hacer para reemplazar la fecha actual por la fecha de la base de datos de mysql.
    gracias por tu ayuda.

  73. dkalej dice:

    Hola realmente muchas gracias por su excelente aporte, hace mucho andaba queriendohacer algo asi, pero tengo un pequeño impace y es al momento de querer guardar en la base de datos por defecto creo un campo de fecha en phpmyadmin y al momento de guardar los datos de formulario me guarda como 0000/00/00 no se si me podria ayudar a solventar ese problema pero te antemano muchas gracias por compartir tan buenos aportes. exitos en sus labores diarias y muchas gracias

  74. Francisco dice:

    WOW WOW WOW esto esta sencillamente Espectacular, Muchísimas gracias Juan

  75. Francisco dice:

    Un pequeño aporte, para bloquear un dia de la semana en especifico, por ejemplo los domingos:

    1
    2
    3
    4
    5
    6
    
    //funcion que bloquea dias de la semana
    function noExcursion(date){
    var day = date.getDay();
    //numero correspondiente a los dias para bloquearse 
    return [(day != 0), ''];
    };

    0=domingo, 1=lunes…

    Luego hay que darle la propiedad en la declaracion de la fecha.

    1
    
    $("#fecha").datepicker({minDate: +5, beforeShowDay: noExcursion, dateFormat: 'mm/dd/yy'});
  76. Borja dice:

    Hola Juan estoy creando una pagina web de alquiler de apartamentos y he pegado el código del calendario y me sale todo menos la imagen: es decir que el calenda rio me sale bien pero solo los numeros… no me sale la imagen del calendario.
    Muchas gracias.

  77. Borja dice:

    Por favor si alguien puede responderme, gracias

  78. Borja dice:

    Todavía estoy haciéndola no esta colgada, pero cuando le doy para verlo en el navegador las imágenes del calendario no aparecen, pero aparte de eso funciona perfectamente.
    Soy principiante en esto.
    Te agradecería alguna ayuda, gracias.

  79. Borja dice:

    No me encuentra los css

  80. Borja dice:

    He leído un comentario anterior que creo que le sucedía lo mismo no?

  81. Borja dice:

    Me pone: no se ha encontrado “jquery-ui-1.7.2custom.css” Si el archivo no se encuentra en el servidor…..

  82. Borja dice:

    ¿Se podría cambiar el tamaño?, gracias.

  83. Susan dice:

    Buenas tardes, estoy usando este calendario en una aplicacion que estoy desarrollando, y me funciona excelente en chrome, IE pero en Firefox no, a alguien le pasa algo similar? aagradezco respuestas, ayer funcionaba bien y hoy no :(

  84. Letizia Lope dice:

    Excelente calendario felicidades, mi pregunta es como puedo hacer para desplegar varios años a la vez? (asi como despliegas los meses), necesito desplegar desde el año actual y 60 años atras 2012,2011…..1952. GRACIAS..

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

2011-2012 © Copyright Emenia S.L. - Creación y Diseño web \ Marketing Online \ Comunicación - Todos los derechos reservados.     Mobile and Web Analytics