在我的表单中,我使用的是带有Bootstrap Datepicker的Backbone.js。
简单来说就是允许客户端使用“dd.mm.yyyy”格式,所以我在日期选择器上设置了这个选项。
self.$el.find('[data-role="invoicedate"]').datepicker({
format: "dd.mm.yyyy",
todayBtn: "linked",
todayHighlight: true,
language: Application_language
});
然后客户端也想允许'dd.mm.yy',并让它自动翻译,所以我做了以下操作:
invoicedateToModel: function() {
var invoicedate = this.$el.find('[data-role="invoicedate"]').val();
var re2 = /^(\d{2})\.(\d{2})\.(\d{2})$/;
if (re2.test(invoicedate)) {
invoicedate = invoicedate.replace(re2,"$1.$2.20$3");
}
var re4 = /^(\d{2})\.(\d{2})\.(\d{4})$/;
if (re4.test(invoicedate)) {
this.saveInvoiceDate(invoicedate);
this.displayInvoiceDate();
this.$el.find('[data-role="invoicedate"]').parent().toggleClass('has-error', false);
} else {
this.$el.find('[data-role="invoicedate"]').parent().toggleClass('has-error', true);
}
},
并将其绑定到输入的change事件上。我现在意识到,这工作得很好,因为dd.mm.yy适合dd.mm.yyyy格式,即它不与之矛盾。
现在,客户机还希望能够将ddmmyyyy添加为条目选项,但是日期选择器会自动更正表单,将新输入的日期替换为最后一个已知的正确日期(或todays日期),因为在调用上面的回调之前,ddmmyyyy与dd.mm.yyyy不匹配。
有没有办法告诉bootstrap-datepicker关于多个允许的格式?
1条答案
按热度按时间bihw5rsg1#
您可以将函数传递给datepicker的format选项,为了实现真正灵活的解析,我使用了moment.js。
从引导数据选择器文档中:
显示:将日期对象转换为字符串的函数(日期、格式、语言),该字符串将存储在输入字段中
至值:将字符串对象转换为日期的函数(日期、格式、语言),将在日期选择中使用
你可能需要尝试一下
moment()
选项,但是你应该能够让它达到你想要的效果,也可以看看momentjs的文档。