Javascript 设置Pickadate“开始”
我正在尝试在两个输入上设置pickadate。当在第一个输入上选择日期时,如果第二个输入为空,我希望在第二个输入中设置所选日期 首先,我尝试在选择第一个输入后更新该值,但有些东西无法正常工作 这两个输入的配置都很复杂,因此我想这样做:Javascript 设置Pickadate“开始”,javascript,pickadate,Javascript,Pickadate,我正在尝试在两个输入上设置pickadate。当在第一个输入上选择日期时,如果第二个输入为空,我希望在第二个输入中设置所选日期 首先,我尝试在选择第一个输入后更新该值,但有些东西无法正常工作 这两个输入的配置都很复杂,因此我想这样做: $( '#event-begin-date,#event-end-date' ).pickadate({ min: true, max: undefined, today: '<?php echo T_("Aujourd\'hui"); ?&
$( '#event-begin-date,#event-end-date' ).pickadate({
min: true,
max: undefined,
today: '<?php echo T_("Aujourd\'hui"); ?>',
clear: '<?php echo T_("Effacer"); ?>',
close: '<?php echo T_("Fermer"); ?>',
format: '<?php echo T_("dd/mm/yyyy"); ?>',
firstDay: <?php echo T_("1"); ?>,
formatSubmit: '<?php echo T_("dd/mm/yyyy"); ?>'
});
$('#event-begin-date').pickadate({
onSet: function(thingSet) {
var picker = $input.pickadate('picker');
picker.set('select', this.component.item.select.pick );
}
});
此插件的创建者Amsul为该案例制作了一个codepan示例: 这是代码笔不可用时的代码:
var from_$input = $('#input_from').pickadate(),
from_picker = from_$input.pickadate('picker')
var to_$input = $('#input_to').pickadate(),
to_picker = to_$input.pickadate('picker')
// Check if there’s a “from” or “to” date to start with.
if ( from_picker.get('value') ) {
to_picker.set('min', from_picker.get('select'))
}
if ( to_picker.get('value') ) {
from_picker.set('max', to_picker.get('select'))
}
// When something is selected, update the “from” and “to” limits.
from_picker.on('set', function(event) {
if ( event.select ) {
to_picker.set('min', from_picker.get('select'))
}
else if ( 'clear' in event ) {
to_picker.set('min', false)
}
})
to_picker.on('set', function(event) {
if ( event.select ) {
from_picker.set('max', to_picker.get('select'))
}
else if ( 'clear' in event ) {
from_picker.set('max', false)
}
})
对于建议解决方案,请注意.pickadate的双重声明:
var from_$input = $('#input_from').pickadate(),
from_picker = from_$input.pickadate('picker');
第一行将重新声明,而不进行任何自定义,这可能会导致代码中出现问题
使用事件并在您的输入中添加来自或数据的更为谨慎的方法:
打开模式事件时,检查from/to中是否有值,并动态设置最大/最小值
var from = $(this).data('from'),
to = $(this).data('to');
$(this).attr('data-value', $(this).val()).pickadate({
min: true,
selectMonths: true,
selectYears: 3,
format: 'dd mmm yyyy',
formatSubmit: 'yyyy-mm-dd',
hiddenName: true,
onOpen: function() {
if(typeof from !== 'undefined' && $('#' + from)) {
var value = ($('#' + from).val() === '' ? true : $('#' + from).pickadate('picker').get('select'));
this.set('min', value);
} else if(typeof to !== 'undefined' && $('#' + to)) {
var value = ($('#' + to).val() === '' ? false : $('#' + to).pickadate('picker').get('select'));
this.set('max', value);
}
}
});