我有以下代码:
$('#MilestoneStartDate').datepicker({
dateFormat: 'dd M yy'
});
Run Code Online (Sandbox Code Playgroud)
如果您使用鼠标单击弹出窗口中的日期来输入日期但是如果某人键入日期或者将日期粘贴到文本框中并使用与上面不同的格式(例如"1 /"),则一切正常1/2016"),当我有这个代码时:
var startDate = $('#MilestoneStartDate').datepicker("getDate");
Run Code Online (Sandbox Code Playgroud)
startDate变量显示为当前日期(尽管显然1/1/2016不是当前日期)
处理这些情况的最佳方法是什么?我应该阻止人们在日期中键入和粘贴,还是有办法进行格式转换?
jquery datepicker date-format date-formatting jquery-ui-datepicker
我有一个jQuery datepicker格式:dd-MM-yyyy.
默认情况下,日期选择器转换的日期,如1-2-3和99年1月2日至2003年1月2日和1999年1月2日分别.但是,只有当您按Enter键或从datepicker中选择日期时才会出现这种情况.我试图通过使用以下方式自动格式化字段:
$j('.datepicker').live('blur', function(){
$j(this).datepicker('setDate', $j(this).datepicker('getDate'));
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我使用的效用函数的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'));
}
}
Run Code Online (Sandbox Code Playgroud)