【发布时间】:2017-09-06 07:11:14
【问题描述】:
我正在尝试覆盖我的 datepicker 插件并实现我自己的自定义 datepicker。我将我的代码放在一个全局 js 文件中,以便在页面加载后立即覆盖。
(function($) {
var originalVal = $.fn.datepicker;
$.fn.datepicker = function(val1, val2, val3) {
console.log(val1); // option
console.log(val2); // maxDate
console.log(val3); // 09/06/2017
// var dp = originalVal.clone();
// console.log(dp);
var _options = {
changeYear: true,
changeMonth: true
}
if (val1 == "option") {
_options[val2] = val3
console.log(_options[val2]);
}
else {
_options = $.extend(_options, val1)
}
console.log(_options); //Object { changeYear: true, changeMonth: true, maxDate: Date 2017-09-06T06:52:32.449Z }
return originalVal.call(this, _options);
};
})(jQuery);
当页面加载和 changeYear 和 changeMonth 以及最大日期限制为 09/06/2017 时,这可以完美运行。
这是我的页面代码:
</head>
<body>
<input type="text" id="pickDate2" >
<input type="text" id="pickDate3" >
<script>
$("#pickDate2").datepicker();
$("#pickDate3").datepicker('option','maxDate',new Date());
$("#pickDate2").change(function(){
var val = $(this).val();
$("#pickDate3").datepicker('option','minDate',Date.parse(val));
})
</script>
</body>
</html>
现在,页面加载后,执行以下代码时,未设置最小日期
$("#pickDate2").change(function(){
var val = $(this).val();
$("#pickDate3").datepicker('option','minDate',09/03/2017);
})
当我检查控制台是否有我的插件覆盖代码时,参数似乎没问题。
console.log(_options);//Object { changeYear: true, changeMonth: true, minDate: Date 2017-09-03T18:15:00.000Z }
据我所知,JavaScript 调用函数没有第二次执行。自从我在网上搜索后,我找不到任何具体的东西。我也希望插件第二次接受参数。
【问题讨论】:
-
在上面,你永远不会在
#pickDate3上初始化日期选择器。 -
是的,在我的更改功能之上
-
没有。
$("#pickDate3").datepicker('option','maxDate',new Date());是方法调用,而不是初始化。如果您对从未初始化过日期选择器的元素执行此操作,则会忽略它。
标签: javascript datepicker