【问题标题】:JQuery-UI Datepicker() click Done programmitallyJQuery-UI Datepicker() 以编程方式单击完成
【发布时间】:2017-01-20 18:51:28
【问题描述】:

有人知道我如何触发日期选择器来触发它的 onClose() 函数,就像用户做出选择并点击了 完成 按钮一样?

也许我找错地方了,但我似乎找不到一种方法来触发一个模拟用户选择日期选择器并点击完成按钮的事件。

这是我的场景:我希望在用户选择选项按钮时更改日期。如果用户选择选项“YEAR”,则 #StartDate 更改为 2016 年 1 月,#EndDate 更改为 2016 年 12 月。如果用户选择选项“MONTH”,则 >#StartDate 更改为 2017 年 1 月,#EndDate 更改为 2017 年 1 月。

ma​​x 和 min 以及 other 要求 在 initModule 中为两个仅执行的日期选择器处理当用户选择日期选择器、更改这些日期并单击完成按钮时。我想在无需用户手动更改日期的情况下触发这些事件。

在我的 initModule 方法中:

    // ----------------Begin Public Methods----------------------------//
    var initModule = function () {
        var currYear = new Date().getFullYear();

        // Hookup datepickers
        $(#EndDate).datepicker({
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            dateFormat: 'MM yy',
            minDate: new Date(2013, 9, 1),
            maxDate: '-1d',
            beforeShow: function () {
                setTimeout(function () {
                    $("#ui-datepicker-div").addClass('calendar-off');
                }, 0);
            },

            onClose: function () {
                var month = $(#ui-datepicker-div .ui-datepicker-month :selected").val();
                var year = $(#ui-datepicker-div .ui-datepicker-year :selected").val();

                $(this).datepicker('setDate' new Date(year, month, 1));
                onChangeEndDate();
            }
        });
        .
        .
        .
        .
        .
    };
    return { initModule: initModule };

所以,我尝试了$("#EndDate").click('onClose'); 和$("#EndDate").trigger('onClose');,但我到处寻找答案却无济于事。

如何在 onClose: 函数 () 中执行,而无需用户手动更改日期选择器中的日期并选择 完成 按钮?

【问题讨论】:

  • 你不会只是将日期输入值设置为你想要的值吗?并触发您想要的事件? DatePicker 只是一个用于设置日期输入值的图形工具。您不需要与它进行交互。
  • 我需要触发 onClose 函数来根据需要设置最小值和最大值。我已经尝试按照您的建议设置值,但日期选择器与我打架。必须有一种方法可以像用户那样触发日期选择器。没有吗?

标签: javascript jquery datepicker


【解决方案1】:

根据API documentation,hide()方法会关闭日期选择器。

所以,如果你想关闭日期选择器,你应该这样做

$(#EndDate).datepicker( "hide" );

【讨论】:

  • 不错的尝试,但执行永远不会进入 onClose() 函数,这仅在用户更改日期时发生。
  • @SebastianKrysiak - 是的,它在您的 jsfiddle 中确实有效,但请注意,这是因为用户正在选择日期并关闭日期选择器。我想从日期选择器中以编程方式“没有”用户输入来模仿这个。
  • @Patricia 我认为该小提琴中没有任何用户,日期选择器在 5 秒后通过 javascript 超时打开和关闭
  • @SebastianKrysiak - 它在我的代码的另一部分中不起作用。但是,你确实让我想到了!我添加了一个$(#EndDate).datepicker( "show" );,然后立即添加了一个$(#EndDate).datepicker( "hide" );,它成功了!谢谢:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 2021-09-30
  • 1970-01-01
相关资源
最近更新 更多