aui 日期选择器,具有 maximumDate 属性的日历
aui date picker, calendar with maximumDate attribute
当我使用 日历最大日期属性 设置 aui 日期选择器时,它有时无法正确 selected(虽然有点奇怪)。到中午还可以,后来就不行了。
我正在使用 Liferay 6.2 EE SP8。使用钩子我正在尝试更改 html\taglib\ui\input_date\page.jsp
<%
Calendar calendarCurrentDate = CalendarFactoryUtil.getCalendar();
%>
<%
if((PortalUtil.getPortletNamespace(PortletKeys.JOURNAL)).equals(namespace) && name.equals("expirationDate")){
%>
calendar: {
maximumDate: new Date(<%= calendarCurrentDate.get(Calendar.YEAR)+1 %>, <%= calendarCurrentDate.get(Calendar.MONTH) %>, <%= calendarCurrentDate.get(Calendar.DAY_OF_MONTH) %>)
},
<%
}
%>
下面是完整的日期选择器代码
<aui:script use='<%= "aui-datepicker" + (BrowserSnifferUtil.isMobile(request) ? "-native" : StringPool.BLANK) %>'>
Liferay.component(
'<%= nameId %>DatePicker',
function() {
var datePicker = new A.DatePicker<%= BrowserSnifferUtil.isMobile(request) ? "Native" : StringPool.BLANK %>(
{
container: '#<%= randomNamespace %>displayDate',
mask: '<%= mask %>',
<%
if((PortalUtil.getPortletNamespace(PortletKeys.JOURNAL)).equals(namespace) && name.equals("expirationDate")){
%>
calendar: {
maximumDate: new Date(<%= calendarCurrentDate.get(Calendar.YEAR)+1 %>, <%= calendarCurrentDate.get(Calendar.MONTH) %>, <%= calendarCurrentDate.get(Calendar.DAY_OF_MONTH) %>)
},
<%
}
%>
on: {
disabledChange: function(event) {
var instance = this;
var container = instance.get('container');
var newVal = event.newVal;
console.log('disalbedChange'+newVal)
container.one('#<%= dayParamId %>').attr('disabled', newVal);
container.one('#<%= monthParamId %>').attr('disabled', newVal);
container.one('#<%= nameId %>').attr('disabled', newVal);
container.one('#<%= yearParamId %>').attr('disabled', newVal);
},
selectionChange: function(event) {
var instance = this;
var container = instance.get('container');
var date = event.newSelection[0];
console.log("event >"+event);
console.log("date >"+date);
if (date) {
container.one('#<%= dayParamId %>').val(date.getDate());
container.one('#<%= monthParamId %>').val(date.getMonth());
container.one('#<%= yearParamId %>').val(date.getFullYear());
}
}
},
popover: {
zIndex: Liferay.zIndex.TOOLTIP
},
trigger: '#<%= nameId %>'
}
);
datePicker.getDate = function() {
var instance = this;
var container = instance.get('container');
return new Date(container.one('#<%= yearParamId %>').val(), container.one('#<%= monthParamId %>').val(), container.one('#<%= dayParamId %>').val());
};
return datePicker;
}
);
Liferay.component('<%= nameId %>DatePicker');
非常感谢任何帮助。是否与时区有关。
尝试将select最大日期作为日期,接下来当您在输入框中单击时-输入值变为空白。如果我们 select 最大日期之前的其他日期,则不会出现这种情况。最大日期是当前日期的一年
JS fiddle
http://jsfiddle.net/uasvug1h/1/(alloy 3 它正在工作)
http://jsfiddle.net/btnkumar/uasvug1h/2/(alloy 2 它不工作)
如何在 alloy 2
中完成这项工作
这是 AlloyUI 2.0.x
中的 bug。它现在已在 3.0.x
和 2.0.x
中修复,特别是 2.0.0.62-deprecated
版本。目前,没有已知的解决方法。
当我使用 日历最大日期属性 设置 aui 日期选择器时,它有时无法正确 selected(虽然有点奇怪)。到中午还可以,后来就不行了。
我正在使用 Liferay 6.2 EE SP8。使用钩子我正在尝试更改 html\taglib\ui\input_date\page.jsp
<%
Calendar calendarCurrentDate = CalendarFactoryUtil.getCalendar();
%>
<%
if((PortalUtil.getPortletNamespace(PortletKeys.JOURNAL)).equals(namespace) && name.equals("expirationDate")){
%>
calendar: {
maximumDate: new Date(<%= calendarCurrentDate.get(Calendar.YEAR)+1 %>, <%= calendarCurrentDate.get(Calendar.MONTH) %>, <%= calendarCurrentDate.get(Calendar.DAY_OF_MONTH) %>)
},
<%
}
%>
下面是完整的日期选择器代码
<aui:script use='<%= "aui-datepicker" + (BrowserSnifferUtil.isMobile(request) ? "-native" : StringPool.BLANK) %>'>
Liferay.component(
'<%= nameId %>DatePicker',
function() {
var datePicker = new A.DatePicker<%= BrowserSnifferUtil.isMobile(request) ? "Native" : StringPool.BLANK %>(
{
container: '#<%= randomNamespace %>displayDate',
mask: '<%= mask %>',
<%
if((PortalUtil.getPortletNamespace(PortletKeys.JOURNAL)).equals(namespace) && name.equals("expirationDate")){
%>
calendar: {
maximumDate: new Date(<%= calendarCurrentDate.get(Calendar.YEAR)+1 %>, <%= calendarCurrentDate.get(Calendar.MONTH) %>, <%= calendarCurrentDate.get(Calendar.DAY_OF_MONTH) %>)
},
<%
}
%>
on: {
disabledChange: function(event) {
var instance = this;
var container = instance.get('container');
var newVal = event.newVal;
console.log('disalbedChange'+newVal)
container.one('#<%= dayParamId %>').attr('disabled', newVal);
container.one('#<%= monthParamId %>').attr('disabled', newVal);
container.one('#<%= nameId %>').attr('disabled', newVal);
container.one('#<%= yearParamId %>').attr('disabled', newVal);
},
selectionChange: function(event) {
var instance = this;
var container = instance.get('container');
var date = event.newSelection[0];
console.log("event >"+event);
console.log("date >"+date);
if (date) {
container.one('#<%= dayParamId %>').val(date.getDate());
container.one('#<%= monthParamId %>').val(date.getMonth());
container.one('#<%= yearParamId %>').val(date.getFullYear());
}
}
},
popover: {
zIndex: Liferay.zIndex.TOOLTIP
},
trigger: '#<%= nameId %>'
}
);
datePicker.getDate = function() {
var instance = this;
var container = instance.get('container');
return new Date(container.one('#<%= yearParamId %>').val(), container.one('#<%= monthParamId %>').val(), container.one('#<%= dayParamId %>').val());
};
return datePicker;
}
);
Liferay.component('<%= nameId %>DatePicker');
非常感谢任何帮助。是否与时区有关。
尝试将select最大日期作为日期,接下来当您在输入框中单击时-输入值变为空白。如果我们 select 最大日期之前的其他日期,则不会出现这种情况。最大日期是当前日期的一年
JS fiddle
http://jsfiddle.net/uasvug1h/1/(alloy 3 它正在工作)
http://jsfiddle.net/btnkumar/uasvug1h/2/(alloy 2 它不工作)
如何在 alloy 2
中完成这项工作这是 AlloyUI 2.0.x
中的 bug。它现在已在 3.0.x
和 2.0.x
中修复,特别是 2.0.0.62-deprecated
版本。目前,没有已知的解决方法。