jQuery 日期选择器年份在选择月份时发生变化,IE7
我们的项目使用 JSF1.2、Icefaces 1.8.2、jQuery UI 组件 datepicker(版本 1.8.14)。 IE7 出现问题(Firefox 没问题)。以下顺序会出现问题:选择一个日期(例如,当天的几天前)。请注意,我们设置了从 1991 年到 2012 年的年份范围。我们的业务逻辑是使用该日期(在代码中称为 dateOfStudy)作为标题打印文档,完成后,在 JSF back bean 中,我将日历 inputext 日期字段清除为 null。现在再次点击日期选择器图标,年份正确显示2011年,选择任何之前的月份(例如回到2011年8月),问题就发生在这里:年份将更改为1991年,不能保留在2011年。
问题不会发生如果我不触摸该日期字段(不清除,保留旧日期)。即使我只是通过 CSS 将日期字体更改为其他颜色,问题仍然会出现(似乎每当我触摸该字段时,日期选择器就会搞砸)。如果你点击今天一次,或者关闭日期选择器,再次打开,就不会出现这个问题。
在我清除日期后,日期选择似乎需要一些初始化?
我附上了一些代码。我有 setDate、onChangeMonthYear、beforShowDay 等 trid 方法/选项,无法解决。任何帮助表示赞赏!
<script type="text/javascript">
var jq = jQuery.noConflict();
jq(document).ready(function() {
jq("[id$=fmv]").live('click', function() {
jq(this).datepicker( {
showOn : 'focus',
changeMonth : true,
changeYear : true,
dateFormat : 'mm/dd/yy',
yearRange : '-20:+1',
showButtonPanel : true,
closeText : 'Close'
}).focus();
});
});
</script>
<ice:inputText id="fmv"
style="background-image:url ('../../../jquery/images/calendar1.png');
background-repeat:no-repeat;background-position:right;"
value="#{pItem.dateOfStudy}"
validator="#{pItem.validate}"
partialSubmit="true"
name="fmv"
valueChangeListener="#{pItem.dateChangeListener}">
</ice:inputText>
Our project using JSF1.2, Icefaces 1.8.2, jQuery UI component datepicker (veresion 1.8.14). Problem with IE7 (Firefox is fine). Problem will happen with following sequence: Select a date (for example, couple days befor doday). Note we have set year range from 1991 to 2012. Our business logic is print a document use that date (in code, called dateOfStudy) as title, once done, in the JSF back bean, I clear the calendar inputext date field to null. Now click datepicker icon again, the year corrtly shows 2011, select any previous month (for example go back to Auguest, 2011), problme happend right here: the year will change to 1991, can not keep at 2011.
The problem will not happen if I do not touch that date field (don't do clear, keep the old date). The problem will still appear even I just change the date font to other color via CSS (seems whenever I touch that field, datepicker will messed up). The problem will not happen if you click today once, or close datepicker, open again.
Seems the datepick need some initializtion after I cleared date?
I attached some code. I have trid method/option like setDate, onChangeMonthYear, beforShowDay, can not solve. Any help is appreciated !!
<script type="text/javascript">
var jq = jQuery.noConflict();
jq(document).ready(function() {
jq("[id$=fmv]").live('click', function() {
jq(this).datepicker( {
showOn : 'focus',
changeMonth : true,
changeYear : true,
dateFormat : 'mm/dd/yy',
yearRange : '-20:+1',
showButtonPanel : true,
closeText : 'Close'
}).focus();
});
});
</script>
<ice:inputText id="fmv"
style="background-image:url ('../../../jquery/images/calendar1.png');
background-repeat:no-repeat;background-position:right;"
value="#{pItem.dateOfStudy}"
validator="#{pItem.validate}"
partialSubmit="true"
name="fmv"
valueChangeListener="#{pItem.dateChangeListener}">
</ice:inputText>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当 backbean 清除或更改日历 inputText 中的输入文本时,我认为这会导致焦点事件,并且在 IE7 下日历会混淆。我使用 showOn focus 的原因是代码位于表 AJAX 显示区域中,因此在图像按钮上使用日历显示不起作用,因为当 AJAX 更新返回时按钮图像将不会显示(jQuery 日历不会被调用),这强迫我使用 showOn focus。我终于通过在最后的 .focus() 之后添加以下刷新日历行解决了今年的更改问题:
现在一切正常。我不确定仅当 backbean 清理日历日期时如何进行此调用,但性能似乎还不错。
When backbean clear or change input text in calendar inputText, I think that causes a focus event, and calendar confused under IE7. The reason I am using showOn focus is the code is in a table AJAX display area, so use calendar show on image button not work since the button image will not show when AJAX update comes back (the jQuery calendar will not get called), which force me to use showOn focus. I finally solved this year change problem by adding the following refresh calendar line after the final .focus():
things working fine now. I am not sure how to make this call only when backbean clean the calendar date, but performance seems ok.