2010-12-22 5 views
9

Ich habe einen Datepicker auf einem Antragsformular. Wir erlauben nur Anwendungen, bei denen das Geburtsdatum innerhalb einer bestimmten Altersgruppe liegt. Ich habe ChangeYear aktiviert und den YearRange auf "-65: -16" gesetzt. Die Probleme, die ich habe, sind wie folgt:jQueryUI DatePicker YearRange und ChangeYear Probleme

1 - Wenn ich ein Datum auswählen, ohne zuerst etwas im Jahr Drop-Down-Auswahl, bekomme ich den richtigen Monat und Tag, aber ich bekomme 2016 als Jahr.

2 - Um dies zu beheben, setze ich den YearRange auf "n-65: n-16". Dies führt dazu, dass das Jahr-Dropdown nur das aktuelle Jahr (2010) anzeigt. Auch eigenartiger ist, dass wenn Sie ein Datum auswählen, haben Sie immer den richtigen Monat und Tag bekommen, und das Jahr 2016.

Hier ist der Code, den ich zu Setup verwenden, um die Datumsauswahl:

<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> 

ich das bin der Hoffnung, ist etwas, was ich falsch gemacht habe, und jemand kann mir sagen, was das ist. Danke für jede Hilfe.

+0

Welche Version von jQuery und jQuery UI verwenden Sie? –

+0

Ich benutze 1.4.4 und 1.8.7, ich habe auch frühere Versionen mit den gleichen Ergebnissen versucht. – CoreyT

Antwort

18

Try 'c' mit für das laufende Jahr wie:

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

für mehr Informationsansicht http://api.jqueryui.com/datepicker/#option-yearRange

+0

Ich habe den obigen Code versucht, aber in meinem Fall funktioniert es nicht. Ein Datumsfeld ist vorbelegt als m/d/y ex: 01/01/xxxx für bereits hinzugefügtes Datum. – sangam

1

Überprüfen Sie Ihre Standardeinstellung. Ich kann nur sehen, was du beschreibst, wenn ich das Standarddatum auf etwas außerhalb des angegebenen Jahresbereichs (d. H. "1-1-2016") ändere. Alles andere im Code, den du gepostet hast, hat für mich funktioniert.

1

Stolperte darüber auch. Ich habe es nicht weiter recherchiert, aber die Abrufreihenfolge scheint einen Unterschied zu machen.

dies funktioniert:

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

dieses Jahr listbox mit nur 2010 zeigt:

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

Versuchen Sie, den Bereich mit den tatsächlichen Jahreswerten anzugeben. z.B.

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

Sie sollten auch mit jedem Datumsformat arbeiten.

1

Versuchen Sie, die MaxDate und minDate Option wie:

$(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

Es hat für mich funktioniert! –