我正在使用pickadate.js库,输入设置为true的可编辑模式。默认情况下,当通过键盘更改日期(手动从输入)时,选择器不会自动更新日历。所以我想创建一个功能以更新手动更改日期后重新打开的日历。
因此,在 onOpen 回调方法中,我将日历的日期设置为输入中的日期。如果格式为 DD/MM/YYY,则此方法有效。当格式为 MM/YYYY 时,每当我在手动更改后单击输入时,它都会设置输入今天的日期。
var $input = $('#pickadate').pickadate({
onOpen: function()
{
var picker = $('#pickadate').pickadate('picker');
var dateinput = $('#pickadate').val();
if(moment(dateinput, 'MM/YYYY', true).isValid())
{
picker.set('select', dateinput, { format: 'mm/yyyy' });
}
},
onClose: function()
{
$('#pickadate').focus();
},
editable: true,
format: 'mm/yyyy',
formatSubmit: 'mm/yyyy'
});
https://jsfiddle.net/cg29dned/
请注意,小提琴的工作方式与我的项目中的不完全一样(例如无法更改月份),但工作足以看到问题。此外,由于可编辑时的已知错误,使用了 onClose 方法和输入上的 Jquery onclick是真的。
脚步:
- 点击输入,选择一个日期。
- 在输入中手动更改日期。
- 重新打开日历
在第一个示例中,它设置了今天的日期,而在第二个示例中,它确实更新了日历(我建议您手动更改月份以查看更新,因为所选日期的 css 不起作用)