jQuery datepicker - 如何覆盖初始化?

use*_*621 5 javascript jquery datepicker

我在我的项目中使用jQuery datepicker的全局初始化- 它几乎是这样的代码:

$('body').find(".datepicker").datepicker({dateFormat: 'yy-mm-dd'});
Run Code Online (Sandbox Code Playgroud)

不过,对于某些页面,我需要覆盖此全局定义,并且需要datepicker使用此设置(重新)初始化:

jQuery(function() {     
        var date = new Date();
        var currentMonth = date.getMonth();
        var currentDate = date.getDate();
        var currentYear = date.getFullYear();

        $('.datepicker').datepicker({
            dateFormat: 'yy-mm-dd',
            minDate: new Date(currentYear, currentMonth-3, currentDate),
            maxDate: new Date(currentYear, currentMonth+3, currentDate)
        });
    });
Run Code Online (Sandbox Code Playgroud)

问题是第二个代码块(使用minDate和maxDate)永远不会“执行” - 的原始初始化datepicker不会被覆盖。

解决此问题的一种方法是将所有.datepicker类重命名为datepicker2. 但是,该页面上有 12 个此类输入,我需要在 3 个页面上进行此页面更改,因此它会更改为 40 个输入类。

有更好的解决方案吗?

mwi*_*son 2

你必须先摧毁它,然后才能摧毁re-init它。

$( ".selector" ).datepicker('destroy');
Run Code Online (Sandbox Code Playgroud)

例子

jQuery(function() {     
        var date = new Date();
        var currentMonth = date.getMonth();
        var currentDate = date.getDate();
        var currentYear = date.getFullYear();
        $('.datepicker').datepicker('destroy'); //Destroy it before re-initing
        $('.datepicker').datepicker({
            dateFormat: 'yy-mm-dd',
            minDate: new Date(currentYear, currentMonth-3, currentDate),
            maxDate: new Date(currentYear, currentMonth+3, currentDate)
        });
    });
Run Code Online (Sandbox Code Playgroud)

另一种选择(正如您所提到的)是挑选那些需要一次性配置的日期选择器。