gpt4 book ai didi

javascript - 如何仅通过单独的图标而不是引用的输入字段激活 YUI Datepicker?

转载 作者:行者123 更新时间:2023-11-30 10:09:45 24 4
gpt4 key购买 nike

我想显示一个 AUI/YUI DatePicker ( Tutorial ) 通过点击相应图标激活, focusclick事件如常。

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 : {
firstDayOfWeek : 1,
},
popover : {
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() 用于输入上的 focusclick 事件, 但它并没有压制要显示的日历

似乎无法将 Datepicker 与输入连接起来,而是将显示/隐藏与输入的使用分开。有什么想法吗?

这一切都在 Liferay 6.2 中的 JSF 2.1 Portlet 中,如果重要,输入由以下人员构建:

<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>

最佳答案

除非我弄错了,否则听起来您希望图标是 trigger对于 DatePicker并且您希望它更新输入。如果是这样,下面的代码应该可以解决问题:

var AUI = YUI;

AUI().use('aui-datepicker', function(A) {

var input = A.one('#input');
var datePicker = new A.DatePicker({
trigger: '#div',
calendar: {
on: {
dateClick: function(event) {
input.set('value', A.Date.format(event.date,{format:datePicker.get('mask')}));
}
}
}
});
});
<script src="https://cdn.rawgit.com/stiemannkj1/701826667a70997013605edcd37e92a6/raw/469fe1ae297e72a5a80eb9015003b7b04eac735e/alloy-ui-3.0.1_aui_aui-min.js"></script>
<link href="https://cdn.rawgit.com/stiemannkj1/90be22de7f48c729b443af14796d91d3/raw/a9f35ceedfac7fc0559b121bed105eaf80f10bf2/aui-css_css_bootstrap.min.css" rel="stylesheet"></link>
<input id="input" /><div id="div" class="icon-calendar">Click Me to Pop Up Calendar</div>

旁注:如果您希望输入更新 DatePicker你可以像我在 initDatePickerShowOnButton method 中做的那样.

此外,此代码的最终结果看起来与 Liferay Faces Alloy <alloy:inputDate showOn="button" /> 非常相似组件(使用 AlloyUI DatePicker )。因此,您可能想检查一下,看看我们是否已经以更像 JSF 的方式解决了您的问题。

完全披露:我是 Liferay Faces 团队的一员,我亲自写了 alloy:inputDate .

关于javascript - 如何仅通过单独的图标而不是引用的输入字段激活 YUI Datepicker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com