#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:
хорошо — вот мое решение — неприятное (код плагина необходимо изменить), но работающее:
- добавлен новый параметр this.params.beforeHiding в конструктор плагина. параметр beforeHiding изначально имеет значение null и может быть установлен в функцию
- вызывается функция, переданная 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, и пользователь может редактировать исходное значение вручную или выбирать значение из средства выбора. Фокусировка промежуточной переменной показывает средство выбора на экране.