我们的项目使用JSF1.2,Icefaces 1.8.2,jQuery UI组件datepicker(veresion 1.8.14)。 IE7的问题(Firefox很好)。问题将按以下顺序发生:选择一个日期(例如,今天的几天)。注意我们设置了1991年到2012年的年份范围。我们的业务逻辑是打印一个文档使用日期(在代码中,称为dateOfStudy)作为标题,一旦完成,在JSF后面的bean中,我将日历inputext日期字段清空为null。现在再次点击datepicker图标,年份显示2011年,选择任何上个月(例如回到Auguest,2011),问题发生在这里:年份将改为1991年,不能保持在2011年。
如果我不触摸该日期字段,则不会发生此问题(请勿清除,保留旧日期)。即使我只是通过CSS将日期字体更改为其他颜色,问题仍会出现(似乎每当我触摸该字段时,datepicker就会搞砸了)。如果您今天点击一次,或关闭datepicker,再次打开,则不会发生此问题。
在我清除日期后,似乎datepick需要一些初始化吗?
我附上了一些代码。我有trid方法/选项,如setDate,onChangeMonthYear,beforShowDay,无法解决。任何帮助表示赞赏!!
<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>
答案 0 :(得分:0)
当backbean清除或更改日历inputText中的输入文本时,我认为会导致焦点事件,并且日历会在IE7下混淆。我使用showOn焦点的原因是代码在表AJAX显示区域中,因此使用日历显示图像按钮不起作用,因为当AJAX更新返回时(jQuery日历不会被调用),按钮图像将不会显示强迫我使用showOn焦点。我终于通过在最终的.focus()之后添加以下刷新日历行来解决今年的更改问题:
jq(this).datepicker("setDate",jq("[id$=fmv]").datepicker("getDate"));
现在工作正常的事情。我不知道如何在backbean清理日历日期时如何进行此调用,但性能似乎没问题。