2010-12-22 21 views
9

Tengo un datepicker en un formulario de solicitud. Solo permitimos aplicaciones en las que la fecha de nacimiento se encuentre dentro de un determinado rango de edad. He habilitado ChangeYear y configuré YearRange en "-65: -16". Los problemas que tengo son los siguientes:jQueryUI DatePicker Problemas YearRange y ChangeYear

1 - Cuando selecciono una fecha sin seleccionar algo en el menú desplegable del año, obtengo el mes y el día correctos, pero obtengo 2016 como un año.

2 - Al intentar solucionarlo, configuré YearRange en "n-65: n-16". Eso hace que el año desplegable solo muestre el año actual (2010). Aún más extraño es que si selecciona una fecha, sigue recibiendo el mes y el día correcto, y el año 2016.

Aquí está el código que utilizo para configurar el selector de fechas:

<script type="text/javascript"> 
    $(document).ready(function (e) { 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 

     function EndRequestHandler(sender, args) { 
      $(function() { 
       $("#DateOfBirth").datepicker({ yearRange: '-65:-13', changeMonth: true, changeYear: true, defaultDate: '1-1-1994', dateFormat: 'mm-dd-yy' }) 
      }); 
     } 

     $(function() { 
      $("#DateOfBirth").datepicker({ yearRange: '-65:-13', changeMonth: true, changeYear: true, defaultDate: '1-1-1994', dateFormat: 'mm-dd-yy' }) 
     }); 
    }); 
</script> 

estoy esperando que esto es algo que he hecho mal, y alguien puede decirme qué es eso. Gracias por cualquier ayuda.

+0

¿Qué versión de jQuery y jQuery UI está utilizando? –

+0

Estoy usando 1.4.4 y 1.8.7, también he probado versiones anteriores con los mismos resultados. – CoreyT

Respuesta

18

Trate de usar 'C' para el año en curso como:

$('.datepicker').datepicker({changeYear: true, yearRange : 'c-65:c+10'}); 

para obtener más información vista http://api.jqueryui.com/datepicker/#option-yearRange

+0

He intentado con el código anterior, pero en mi caso no funciona. Un campo de fecha se rellena previamente como m/d/y ex: 01/01/xxxx para la fecha ya agregada. – sangam

1

Compruebe la configuración de fecha predeterminada. Solo puedo ver lo que describes cuando cambio la fecha predeterminada a algo fuera del rango de año especificado (es decir, '1-1-2016'). Todo lo demás en el código que publicaste funcionó para mí.

1

Tropezamos con esto también. No investigué más, pero el orden de las llamadas parece marcar la diferencia.

esto funciona:

$('DIV#startdate').datepicker('option', { dateFormat: 'yy-mm-dd' }); 
$('DIV#startdate').datepicker('setDate', '10-09-11'); 
$('DIV#startdate').datepicker('option', { changeYear: true }); 

esto muestra el cuadro de lista del año, con sólo 2010:

$('DIV#startdate').datepicker('option', { dateFormat: 'yy-mm-dd' }); 
$('DIV#startdate').datepicker('option', { changeYear: true }); 
$('DIV#startdate').datepicker('setDate', '10-09-11'); 
1

Intenta dar el rango con los valores reales del año. p.ej.

$('.datepicker').datepicker({changeYear: true, yearRange : '1990:2010'}) 

También deberían funcionar con cualquier formato de fecha.

1

Trate de usar la opción MaxDate y MinDate como:

$(document).ready(function() { 
    $("#datepicker").datepicker({ 
     yearRange: '-65:-13', 
     changeMonth: true, 
     changeYear: true, 
     defultDate: '1-1-1994', 
     dateFormat: 'mm-dd-yy', 
     minDate:"-65Y", 
     maxDate:"-13Y" 
    }); 
}); 
+0

¡Funcionó para mí! –

Cuestiones relacionadas