A plugin used to select date. If you need timepicker, see DateTimePicker.
Attention:
On touch screen devices, <input>
will activate keyboard when it is focused. Keyboard activation can be disabled by adding readonly
in some browsers.
To create a datepicker, add .data-am-datepicker
attribute to <input>
element.
<p><input type="text" class="am-form-field" placeholder="日历组件" data-am-datepicker="{locale: 'en_US'}" readonly/></p>
Datepicker can be used with .am-input-group
. Add the .am-datepicker-date
class to parent element, or add the .am-datepicker-add-on
class if not using <input>
element as trigger element.
<div class="am-input-group am-datepicker-date" data-am-datepicker="{format: 'dd-mm-yyyy', locale: 'en_US'}">
<input type="text" class="am-form-field" placeholder="Calendar" readonly>
<span class="am-input-group-btn am-datepicker-add-on">
<button class="am-btn am-btn-default" type="button"><span class="am-icon-calendar"></span> </button>
</span>
</div>
Default color is blue. Set theme
option to change color:
success
: Greenwarning
: Orangedanger
: Red<p><input type="text" class="am-form-field" placeholder="Calendar" data-am-datepicker="{theme: 'success', locale: 'en_US'}" readonly/></p>
Use viewMode
option to change the initial view mode:
days
: Show days (Default)months
: Show monthsyears
: Show years<div class="am-input-group am-datepicker-date" data-am-datepicker="{format: 'yyyy-mm-dd', viewMode: 'years', locale: 'en_US'}">
<input type="text" class="am-form-field" placeholder="Calendar" readonly>
<span class="am-input-group-btn am-datepicker-add-on">
<button class="am-btn am-btn-default" type="button"><span class="am-icon-calendar"></span> </button>
</span>
</div>
Use minViewMode
to set the minimum view mode. In the following example, the minimum view mode is set to months.
<div class="am-input-group am-datepicker-date" data-am-datepicker="{format: 'yyyy-mm', viewMode: 'years', minViewMode: 'months', locale: 'en_US'}">
<input type="text" class="am-form-field" placeholder="Calendar" readonly>
<span class="am-input-group-btn am-datepicker-add-on">
<button class="am-btn am-btn-default" type="button"><span class="am-icon-calendar"></span> </button>
</span>
</div>
Years Only:
Please be aware of that there is one more space at the end of 'yyyy '
in `format: 'yyyy '
.
<div>
<input type="text" class="am-form-field" data-am-datepicker="{format: 'yyyy ', viewMode: 'years', minViewMode: 'years', locale: 'en_US'}" placeholder="Calendar" data-am-datepicker readonly/>
</div>
Varification can be done in the callback function of event changeDate
. Use $().data('date')
to get the date.
<div class="am-alert am-alert-danger" id="my-alert" style="display: none">
<p>Start date should be earlier than end date!</p>
</div>
<div class="am-g">
<div class="am-u-sm-6">
<button type="button" class="am-btn am-btn-default am-margin-right" id="my-start">Start in</button><span id="my-startDate">2014-12-20</span>
</div>
<div class="am-u-sm-6">
<button type="button" class="am-btn am-btn-default am-margin-right" id="my-end">End in</button><span id="my-endDate">2014-12-25</span>
</div>
</div>
<script>
$(function() {
var startDate = new Date(2014, 11, 20);
var endDate = new Date(2014, 11, 25);
var $alert = $('#my-alert');
$('#my-start').datepicker({locale: 'en_US'}).
on('changeDate.datepicker.amui', function(event) {
if (event.date.valueOf() > endDate.valueOf()) {
$alert.find('p').text('Start date should be earlier than end date!').end().show();
} else {
$alert.hide();
startDate = new Date(event.date);
$('#my-startDate').text($('#my-start').data('date'));
}
$(this).datepicker('close');
});
$('#my-end').datepicker({locale: 'en_US'}).
on('changeDate.datepicker.amui', function(event) {
if (event.date.valueOf() < startDate.valueOf()) {
$alert.find('p').text('Start date should be earlier than end date!').end().show();
} else {
$alert.hide();
endDate = new Date(event.date);
$('#my-endDate').text($('#my-end').data('date'));
}
$(this).datepicker('close');
});
});
</script>
Set the avaliable dates with onRender
option.
<div class="am-g">
<div class="am-u-sm-6">
Set avaliable dates<br/>
<p><input type="text" class="am-form-field" placeholder="Only dates after today is avaliable" id="my-start-2"/></p>
</div>
<div class="am-u-sm-6">
Avaliable dates<br/>
<p><input type="text" class="am-form-field" id="my-end-2" /></p>
</div>
</div>
<script>
$(function() {
var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
var $myStart2 = $('#my-start-2');
var checkin = $myStart2.datepicker({
onRender: function(date) {
return date.valueOf() < now.valueOf() ? 'am-disabled' : '';
},
locale: 'en_US'
}).on('changeDate.datepicker.amui', function(ev) {
if (ev.date.valueOf() > checkout.date.valueOf()) {
var newDate = new Date(ev.date)
newDate.setDate(newDate.getDate() + 1);
checkout.setValue(newDate);
}
checkin.close();
$('#my-end-2')[0].focus();
}).data('amui.datepicker');
var checkout = $('#my-end-2').datepicker({
onRender: function(date) {
return date.valueOf() <= checkin.date.valueOf() ? 'am-disabled' : '';
},
locale: 'en_US'
}).on('changeDate.datepicker.amui', function(ev) {
checkout.close();
}).data('amui.datepicker');
})
</script>
Add data-am-datepicker
attribute, and set options in it.
<input class="" data-am-datepicker="{format: 'yyyy-mm'}"/>
Use Method $().datepicker(options)
.
$('#my-datepicker').datepicker({format: 'yyyy-mm'});
Method | Description |
---|---|
.datepicker('open') | Show calendar |
.datepicker('close') | Hide calendar |
.datepicker('place') | Refresh the relative postion of datepicker |
.datepicker('setValue', value) | Set new value to Datepicker |
format
: Date format. Default format is yyyy-mm-dd
. Other formats include yy/mm/dd
, mm/dd
, dd/mm/yyyy
, dd/mm/yy
, dd/mm
and etc. Dividers are chosen from /
, -
and
.viewMode
: Initial view mode. string
|integer
. Default value is 0. Avaliable options include 'days'
, 'months'
and 'years'
, or respective 0
, 1
and 2
.minViewMode
: Minimum view mode. string
|integer
. Default value is 0
.Options include 'days'
, 'months'
and 'years'
, or respective 0
, 1
and 2
.onRender
: The function get called when rendering. For example, use .am-disabled
to set the disabled and avaliable dates.theme
: Theme of datepicker. Options include success
, danger
and warning
, which use green, red and orange respectively. The default color is blue.locale
: Language. Options include zh_CN
and en_US
. Default language is Chinese.autoClose
: Close the datepicker when date is selected. Default value is true
(Only works in days
view).设置 viewMode
和 minViewMode
需要注意日期格式 format
的设置。
Print log in console when selecting date.
$(function() {
$('#doc-datepicker').datepicker().
on('changeDate.datepicker.amui', function(event) {
console.log(event.date);
});
});
Event | Description |
---|---|
changeDate.datepicker.amui | Triggered when selected date is changed |
Support English and Chinese (Simplified). Default language is Chinese. Use Datepicker.locales
to add support to more languages.
Language Setting:
<p>
<input type="text" class="am-form-field" placeholder="YYYY-MM-DD"
data-am-datepicker="{locale: 'en_US'}" readonly/>
</p>
Language Extension:
<p>
<input type="text" class="am-form-field" placeholder="来一丢丢 French"
data-am-datepicker="{locale: 'fr', autoClose: 0}" readonly/>
</p>
<script>
(function($) {
$.AMUI && $.AMUI.datepicker && ($.AMUI.datepicker.locales.fr = {
days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"],
daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"],
daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"],
months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
monthsShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec"],
weekStart: 1
});
})(window.jQuery);
</script>