kelvinluck Jquery DatePicker Multiple Select - PullRequest
1 голос
/ 04 марта 2011

У меня есть встроенный календарь , который настроен на выбор нескольких дат.Я хочу установить количество выбираемых полей, которые будут установлены динамически в зависимости от значения текстового поля.вот мой код js

var handle;
    $(function () {
        Date.format = 'yyyy-mm-dd';
        setDatePicker();
    });

    $("#numField").live('click', function () {
        setDatePicker();
    });
    function setDatePicker() {
        //$("#multimonth").destroy();
        handle =  $('#multimonth')
        .datePicker(
            {
                createButton: false,
                inline: true,
                closeOnSelect: false,
                selectMultiple: true,
                numSelectable: $("#numField").val()==""?3:$("#numField").val()
            }
        )
        .bind(
            'click',
            function () {
                $(this).dpDisplay();
                this.blur();
                return false;
            }
        )
        .bind(
            'dateSelected',
            function (e, selectedDate, $td, state, selectedDates) {
                var dotes = $('#multimonth').dpGetSelected();
                for (i = 0; i < dotes.length; i++) {
                    dotes[i] = dotes[i].asString();
                }
                var dates = dotes.join(",");
                alert(dates);
                $("#hiddenDate").val(dates);
            }
        )

    }

У меня есть поле ввода с id = "numField" и я хочу изменить параметр даты_выборщика datepicker при изменении события моего поля ввода.Я не могу найти какой-либо метод в его API.заранее спасибо

1 Ответ

3 голосов
/ 04 марта 2011

В API нет ничего, что могло бы изменить numSelectable, но вы могли бы добавить это самостоятельно без особых усилий.

Если вы посмотрите на источник, вы увидите кучу dp* функции, определенные в литерале объекта:

dpSetDisabled : function(s)
{
    //...
},
dpSetStartDate : function(d)
{
    //...
},
// ...

Так что просто добавьте эту в список:

dpSetNumSelectable: function(n) {
    return _w.call(this, 'setNumSelectable', n);
}

Затем, далее, вы увидите, где setStartDate,setEndDate и т. Д. Определены в другом литерале объекта, поэтому просто добавьте определение setNumSelectable в этот список:

setNumSelectable: function(n) {
    if(n <= 0) {
        // Sanity checking is left as an exercise for the reader.
    }
    if(this.numSelected > n) {
        // What to do in this case is also left as an exercise for
        // the reader. All the pieces you need to do something sensible
        // here are available and nearby in the source.
    }
    this.numSelectable = n;
}

Затем вы сможете сделать это по мере необходимости, чтобы изменить numSelectableопция:

$('#multimonth').dpSetNumSelectable(some_integer);

Не бойтесь изучать и изменять исходный код инструментов, которые вы используете, в конце концов, в этом смысл программного обеспечения с открытым исходным кодом.Вы могли бы даже отправить автору патч, который добавляет желаемую функциональность и, таким образом, помогает другим людям, поскольку они помогли вам (что является еще одним аспектом программного обеспечения с открытым исходным кодом).

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