如何在KnockoutJS中正确配置datepicker日期选择器的本地化参数
问题原因
你混淆了jQuery UI Datepicker 1.10.4和其他日期组件(如Bootstrap Datepicker)的配置参数,你写的language、format、autoclose都不是jQuery UI Datepicker支持的配置项,所以配置不生效。
修正方案
jQuery UI Datepicker 1.10.4 默认语言就是英文,不需要额外设置locale或者language参数,按照以下规则调整你的配置即可:
- 日期格式配置项名为
dateFormat,你需要的MM d, yyyy对应写法为MM d, yy(jQuery UI 中yy表示四位年份,写yyyy会重复输出两次年份) - 选完日期自动关闭是jQuery UI Datepicker的默认行为,不需要额外配置
- 如果你之前全局修改过默认语言为其他语种,要恢复英文的话,在初始化自定义绑定前加一行全局配置即可:
$.datepicker.setDefaults($.datepicker.regional['en']);
修正后的绑定代码示例
ko.bindingHandlers.datepicker = { init: function (element, valueAccessor, allBindingsAccessor) { // 支持自定义配置覆盖默认配置 var customOptions = allBindingsAccessor().datepickerOptions || {}; var defaultOptions = { dateFormat: 'MM d, yy', maxDate: 0 }; // 合并配置 var options = $.extend({}, defaultOptions, customOptions); $(element).datepicker(options); // 处理字段变更 ko.utils.registerEventHandler(element, "change", function () { var observable = valueAccessor(); observable($(element).datepicker("getDate")); }); // 处理组件销毁 ko.utils.domNodeDisposal.addDisposeCallback(element, function () { $(element).datepicker("destroy"); }); } };
内容的提问来源于stack exchange,提问作者lonelydev101
相关产品推荐
相关产品推荐

