Я хочу, чтобы отобразить AUI/YUI DatePicker (Tutorial), что только получает активируется нажатием на соответствующую иконку, не на focus
или click
событий, как обычно.Как активировать YUI Datepicker только по отдельному значку, а не по указанному полю ввода?
var AUI = YUI;
AUI().use('event', 'aui-datepicker', function(A) {
function createCalendar(calendarInputBox) {
var datumInputField = calendarInputBox.one('input.calendar');
var datumInputFieldSelector = '#' + datumInputField.get('id').replace(/:/g, '\\:');
var datepickerIcon = calendarInputBox.one('.calendarInputIcon');
var datepicker = new A.DatePicker({
container : datumInputFieldSelector,
mask : '%d.%m.%Y',
calendar : {
\t \t firstDayOfWeek : 1,
},
popover : {
\t \t zIndex : 1,
}
});
function updateDatepickerFromInputAndShowDatepicker() {
datumInputField.focus();
datepicker.show();
}
datepickerIcon.on('click', updateDatepickerFromInputAndShowDatepicker);
}
A.all('.calendarInputBox').each(createCalendar);
});
<link href="http://cdn.alloyui.com/2.0.0/aui-css/css/bootstrap.min.css" rel="stylesheet"/>
<script src="http://cdn.alloyui.com/2.0.0/aui/aui-min.js"></script>
<span class="calendarInputBox" id="generated-0">
<span class="calendarInputIcon">icon</span>
<input id="generated-1" name="generated-2:form:from" type="text" value="" maxlength="10" class="calendar calendarFrom" />
</span>
Я пытался использовать
- значок в качестве контейнера и чтения и записи даты вручную, а всплывающее окно не появлялось больше
e.preventDefault()
иe.stopPropagation()
дляfocus
иclick
событий на входе, но он не подавил отображаемый каландр
Невозможно подключить Datepicker к входу, но отдельно отображать/скрывать от использования ввода. Есть идеи?
Это все внутри JSF 2.1 портлетов в Liferay 6.2, если это имеет значение, вход построен по:
<span class="calendarInputBox">
<div class="calendarInputIcon"></div>
<h:inputText id="from" value="#{searchData.from}" maxlength="10" styleClass="calendar calendarFrom">
<f:convertDateTime pattern="dd.MM.yyyy" />
</h:inputText>
</span>
Некоторые примечания: Я не верю, что 'AUI ({lang: 'de-DE'})' делает что-то при запуске в портале Liferay. Я считаю, что «AUI» получает настройки локализации с портала, и его нельзя изменить. Если вы хотите иметь отдельный компонент с разной локализацией, вместо этого вы можете использовать отдельную песочницу «YUI». Также [вы не должны ставить 'div' внутри' span'] (http://stackoverflow.com/questions/5545884/can-span-tags-have-any-type-of-tags-inside-them). – stiemannkj1
Спасибо, я удалил lang и изменил значок, чтобы использовать пролет. – flob