У меня есть требование дублировать набор полей ввода по нажатию кнопки; столько раз, сколько требуется.
Эта функция такая же, как у нас в LIferay:
Перейдите в «Панель управления -> Пользователь», нажмите на любого пользователя.
На правой стороне страницы, под Идентификацией; нажмите «Адреса, номера телефонов».
Нажатие на символ ПЛЮС (кнопка Добавить) дублирует набор полей ввода.
Вот код, который я сделал для моего требования.
Код для поля ввода:
<input class="date-pick" readonly="readonly" id="<portlet:namespace/>fromDate1" type="text" onchange="showDate()"
name="<portlet:namespace/>fromDate1" value="" />" >
JavaScript для использования значения даты:
function showDate()
{
alert(document.getElementById("<portlet:namespace/>fromDate1"));
}
Функция jQuery для привязки указателя даты с вышеприведенным текстовым полем:
jQuery(function(){
jQuery('.date-pick').datepicker({autoFocusNextInput: true});
});
Функция Liferay.Autofields для создания дублирующейся строки полей формы:
jQuery(
function () {
new Liferay.AutoFields(
{
container: '#<portlet:namespace />webFields',
baseRows: '#<portlet:namespace />webFields > .lfr-form-row',
fieldIndexes: '<portlet:namespace />formFieldsIndexes',
onAdd: function(newField) {
alert('This field got added.');
jQuery('.date-pick').datepicker({autoFocusNextInput: true});
},
onRemove: function() {
alert('The last field was removed.');
}
}
);
}
);
Для исходного набора полей ввода указатель даты работает правильно; но для набора полей ввода, сгенерированных после нажатия на символ ПЛЮС (кнопка Добавить), средство выбора даты не работает.
Кроме того, поскольку имя полей ввода изменяется динамически, поэтому я сталкиваюсь с проблемой использования значений полей ввода (см. Функцию JavaScript showDate ()).
Кто-нибудь работал над этим или есть идеи; тогда помогите пожалуйста