jquery: передача параметров и начальной функции прототипу jquery

#javascript #jquery #parameters #chaining

#javascript #jquery #параметры #цепочка

Вопрос:

Я новичок на этом сайте и новичок в jQuery.

Я хочу использовать так называемый загрузочный сборщик даты и времени материала, который позволяет вам назначать плагин для элемента ввода HTML. Когда onfocus для этого элемента происходит событие, средство выбора просыпается и отображается на экране в режиме наложения. После выбора даты из средства выбора средство выбора исчезает, а значение переменной HTML устанавливается на выбранное значение.

Я хочу, чтобы средство выбора отображалось без взаимодействия с входной переменной HTML; кроме того, пользователь должен иметь возможность изменять значение элемента ввода HTML без использования средства выбора. Моя проблема в том, что я не могу передать начальные параметры и функцию плагину.

Обычно плагин используется таким образом:

 $('#_Date_5').bootstrapMaterialDatePicker();  // this works
 

Параметры могут быть переданы следующим образом

 $('#_Date_5').bootstrapMaterialDatePicker(
    {
        format: '<format>',
        shortTime: false,
        minDate: null,
        maxDate: null,
        currentDate: null,
        date: true,
        time: true,
        clearButton: true,
        nowButton: true,
        switchOnClick: false,
        triggerEvent: 'focus'
    } 
);
 

Если я хочу, чтобы функция (скажем _fireCalendar() ,) вызывалась при инициализации плагина, я мог бы использовать следующее:

 $('#_Date_5').bootstrapMaterialDatePicker('_fireCalendar');
 

Теперь я использую промежуточную переменную HTML, чтобы предоставить сборщику желаемое начальное значение даты и времени и привязать сборщик к этой промежуточной переменной. Средство выбора должно отображаться после нажатия на знаковый символ справа от редактируемого значения. Теперь пользователь может редактировать значение без использования средства выбора или решить использовать средство выбора в качестве альтернативы.

Теперь к моей проблеме — возможно ли передать как набор параметров, так и функцию обратного вызова при инициализации

Мне удалось добиться этого, вызвав _fireCalender() конструктор плагина, однако я хотел бы иметь возможность делать это без изменения самого плагина.

Спасибо за вашу помощь!

Ответ №1:

хорошо — вот мое решение — неприятное (код плагина необходимо изменить), но работающее:

  1. добавлен новый параметр this.params.beforeHiding в конструктор плагина. параметр beforeHiding изначально имеет значение null и может быть установлен в функцию
  2. вызывается функция, переданная this.params.beforeHiding в конце метода hide()

в конструкторе

 this.params = {beforeHiding:null, <original parameters>}
 

в методе hide()

 if ( this.params.beforeHiding !== null ) this.params.beforeHiding();
 

этот код будет использовать новую функциональность:

 var date_interim = document.getElementById('var_interim');
var date_original = document.getElementById('_Date_5');

date_interim.value = date_original.value;

$('#var_interim').bootstrapMaterialDatePicker(
{
format: '<format>',
shortTime: false,
date: true,
time: false,
clearButton: true,
nowButton: true,
switchOnClick: false,
triggerEvent: 'focus',
beforeHiding: function()
{
var date_interim = document.getElementById('var_interim');
var date_original = document.getElementById('_Date_5');
date_original.value = date_interim.value;
}
}
);

// display the picker by focussing it
date_interim.focus();
 

Код привязан к событию щелчка тега HTML-изображения и использует промежуточную переменную, которая является полем ввода HTML, и пользователь может редактировать исходное значение вручную или выбирать значение из средства выбора. Фокусировка промежуточной переменной показывает средство выбора на экране.