我有一个格式为dd-MM-yyyy的jQuery日期选择器。
默认情况下,日期选择器会将日期转换为如1-2-3和1-2-99的格式,分别转换为01-02-2003和01-02-1999。但是,只有在按Enter键或从日期选择器中选择日期时才会发生这种情况。我尝试使用以下代码在离开字段时自动格式化字段:
$j('.datepicker').live('blur', function(){
$j(this).datepicker('setDate', $j(this).datepicker('getDate'));
});
在这种情况下,我正在使用DatePicker本身的setDate和getDate实用函数。当您使用键盘并使用TAB键输入日期时,它有效。但是,当您尝试使用鼠标选择日期时,模糊触发器也会被激活。因此,您必须用鼠标选择日期两次,因为第一个日期将由模糊事件设置为旧值。
是否有任何事件我错过了可以使用?
解决办法
不太优雅,但这是部分解决方案:
var timeout;
$j('#geboortedatum').live('keypress', function() {
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(formatDate, 1000);
});
function formatDate() {
var gebdat = $j('#geboortedatum').val();
var dashCount = gebdat.split('-').length - 1;
if(dashCount == 2 && gebdat.length >= 5) {
$j('#geboortedatum').datepicker('setDate', $j('#geboortedatum').datepicker('getDate'));
}
}