2011-09-22 82 views
0

我们的项目使用JSF1.2,Icefaces 1.8.2,jQuery UI组件datepicker(版本1.8.14)。问题与IE7(火狐很好)。以下顺序会出现问题:选择一个日期(例如,今天的几天)。请注意,我们设置了从1991年到2012年的年份范围。我们的业务逻辑是在JSF后台打印文档时使用该日期(在代码中称为dateOfStudy)作为标题,一旦完成,我将日历inputext日期字段清空为空。现在点击datepicker图标,当年显示2011年,选择任何一个月(例如回到Auguest,2011),问题发生在这里:年份将改为1991年,不能保持在2011年。jQuery datepicker在选择月份时更改,IE7

如果我不触摸该日期字段,则不会发生问题(不要清除,保留旧日期)。问题仍然会出现,即使我只是通过CSS将日期字体更改为其他颜色(似乎只要我触摸该字段,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

当backbean清除或更改日历inputText中的输入文本时,我认为这会导致焦点事件和日历在IE7下混淆。我使用showOn焦点的原因是代码位于表AJAX显示区域中,所以在图像按钮上使用日历显示不起作用,因为当AJAX更新返回时(jQuery日历不会被调用),按钮图像不会显示,迫使我使用showOn焦点。我终于在最后.focus()后添加以下刷新日历线解决了今年变化问题:

jq(this).datepicker("setDate",jq("[id$=fmv]").datepicker("getDate")); 

事情现在工作正常。我不确定如何仅在backbean清理日历日期时进行此调用,但性能似乎不错。

相关问题