jqueryui DatePicker «создать» события не работают - PullRequest
3 голосов
/ 09 декабря 2011

В моем проекте, который использует с плагином даты плагин jQueryUI,

но в этом коде событие create никогда не запускается,

Вы можете проверить документацию на официальном сайте:

http://jqueryui.com/demos/datepicker

на вкладке Параметры .

$('#datepicker').datepicker({
    create: function(event, ui) {
        alert("ppp");
    }
});

Ответы [ 3 ]

3 голосов
/ 09 декабря 2011

Документация лежит (как отметил Ник).Если вы посмотрите на jquery.ui.widget.js в источнике, вы увидите следующее:

$.Widget.prototype = {
    // ...
    _createWidget: function( options, element ) {
        // ...
        this._trigger( "create" );
        this._init();
    },

Таким образом, событие create обрабатывается фабрикой виджетов jQuery-UI, поэтому должно поддерживаться по всем виджетам.Если вы посмотрите на jquery.ui.button.js, вы увидите, что используется фабрика виджетов:

$.widget( "ui.button", {
    options: {
        //...

, и вы обнаружите, что виджет кнопки делает событие создания.Если вы посмотрите на jquery.ui.datepicker.js, вы не найдете никаких $.widget, но найдете напоминание о том, что нужно сделать, когда средство выбора даты преобразуется в фабрику виджетов:

// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
    return this.dpDiv;
},

Устройство выбора даты нене используйте фабрику виджетов, и она не реализует само событие create.

Событие beforeShow работает, хотя, возможно, вы можете использовать это.

Быстрое демо (откройте консоль, пожалуйста): http://jsfiddle.net/ambiguous/kn3hq/

2 голосов
/ 09 декабря 2011

Я думаю, что есть открытый билет по этому поводу.

http://bugs.jqueryui.com/ticket/6935

0 голосов
/ 23 ноября 2017

Вы можете добиться временного решения, используйте «событие вставки dom» на «главной странице», чтобы отследить создание средства выбора даты:

$(document).bind('DOMNodeInserted', function (event) {

    //  If is a datepicker element
    if ($(event.target).hasClass('ui-datepicker-calendar')) {         

        //  Check only new elements
        $('.hasDatepicker:not(.controlClass)').each(function (i, obj) {

            //  Add class for avoid current obj in next datepicker creation
            $(obj).addClass("controlClass");

            //  Do what you want with $(obj)

        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...