我有通常的Jquery datepicker工作正常。但我想将它提供给一组选择框而不是一个文本字段。我已成功将其输入一个具有特定格式的选择字段,但我不确定如何将所有三个字段输入不同格式的不同字段。
$(document).ready(function(){
$("#search_startdate").datepicker({showOn: 'button',
buttonImage: '/images/cal/calendar.gif',
buttonImageOnly: true,
minDate: 0,
maxDate: '+6M +10D',
showAnim: 'fadeIn',
altField: '#startdate_month',
altFormat: 'MM',
altField: '#startdate_day',
altFormat: 'dd'});
//$("#datepicker").datepicker({showOn: 'button', buttonImage: 'images/calendar.gif', buttonImageOnly: true});
});
这不起作用,它适用于最后一个字段,但忽略第一个字段。如果我删除第二组altField和altFormat行,第一组就可以了。
我也试过把它们放在一个系列中,
altField: '#startdate_month', '#start_day', altFormat: 'MM', 'dd'
问题与此处相同:
http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Jquery/Q_24767646.html
有什么想法吗?
谢谢,
答案 0 :(得分:8)
我建议您使用单个备用字段进行设置以获取第一个选择,然后使用onClose处理程序解析日期并填充其他选择。
$(document).ready(function(){
$("#search_startdate").datepicker({showOn: 'button',
buttonImage: '/images/cal/calendar.gif',
buttonImageOnly: true,
minDate: 0,
maxDate: '+6M +10D',
showAnim: 'fadeIn',
altField: '#startdate_month',
altFormat: 'MM',
onClose: function(dateText,picker) {
$('#startdate_day').val( dateText.split(/\//)[1] );
}
});
});
答案 1 :(得分:1)
我认为这更简单:
$('#datePickerField').datepicker({
onClose: function (dateText) {
var objDate = new Date(dateText);
$('#year_field').val(dateText.length ? objDate.getFullYear() : '');
$('#month_field').val(dateText.length ? objDate.getMonth() + 1 : '');
$('#day_field').val(dateText.length ? objDate.getDate() : '');
}
});
如果您希望对日,月,年字段进行更改,请更新主数据表:
$('#year_field,#month_field,#day_field').change(function() {
$('#datePickerField').datepicker('setDate', new Date(
parseInt($('#year_field').val(), 10),
parseInt($('#month_field').val(), 10) - 1,
parseInt($('#day_field').val(), 10)));
});
答案 2 :(得分:0)
在这里留下答案以供将来参考,以下是我如何做到的样本:
$("#departDate").datepicker({
onClose: function( selectedDate ) {
// use split() to break down the [MM/DD/YYYY] format
// populate each into multiple field
$('#departDateDay').val( selectedDate.split(/\//)[1] ); // day
$('#departDateMonth').val( selectedDate.split(/\//)[0] ); // month
$('#departDateYear').val( selectedDate.split(/\//)[2] ); // year
}
})