JQuery Datepicker在表、IE7、JSF应用程序中加载缓慢



我有一个JSF web应用程序,在表中使用jQuery日期选择器。表显示了文档列表,每个文档旁边都有日期输入字段,该字段通过id绑定到jQuery日期选择器。如果我将jQuery脚本放在xhtml文件的最顶部,加载会很快。

问题是,当表的一部分得到ajax更新时(我们使用的是Icefaces 1.8.2),jQuery再也找不到日期输入字段id。我称之为ajax的是,我们对列出的文档标题有搜索功能,一旦搜索完成,我们应该显示结果列表。但是是结果列表,日历没有显示,我认为jQuery丢失了动态生成的列表输入字段id。

所以我把jQueryjava脚本放在输入日期字段之前,然后事情就开始工作了,这意味着在标题搜索之后,文档标题的结果列表和日期选择器一起出现了。

但问题是页面加载现在initail页面加载变得如此缓慢,超过30秒。桌子排的不是那么多,大约有100多个。下面是xhtml代码:

   <ice:dataTable var="pItem" value="#{someBackbean.somelist}"
             id="csList"
     <ice:column>
     <ice:panelGrid columns="3">
     <div>
<script type="text/javascript">     
    var jq=jQuery.noConflict();
    jq(document).ready(function(){
    //For id: The $= operator matches the end of the string and the id name mangling is always on the front.
    jq("[id$=fmv]").datepicker({
        showOn: 'button',
        buttonImage: '../../../jquery/images/calendar.gif',
        buttonText: 'Click to select a date', 
        buttonImageOnly: true,  
        duration: 'fast', 
        changeMonth: true,
        changeYear: true,
        dateFormat:'mm/dd/yy',
        yearRange: '-1:+1',
        showButtonPanel: true,
        closeText: 'Close',
        showWeek: true                      
        })
    });
         </script>
            <ice:inputText id="fmv"
                       size="10"
                       maxlength="10"
                       title="Date of Study"
                       value="#{pItem.dateOfStudy}"
                       validator="#{pItem.validate}"
                       name="fmv"
                       onchange="submit();"                  
                       valueChangeListener="#{pItem.dateChangeListener}"> 
               </ice:inputText>
           </div>  
           <ice:outputText style="color:red;cursor:pointer;"
                           title="Date is required to Print this Form" value="*"/>
           <ice:outputText value="#{pItem.label}" styleClass="nonLink"  />
           <ice:message for="fmv" styleClass="#{pItem.cssClass}" />               
        </ice:panelGrid>
     </ice:column>
  </ice:dataTable>

您似乎在为每一行创建日期选择器,这将非常低效。最好是单独创建按钮,然后将一个点击处理程序委托给按钮的表(因为我认为一次不需要有多个日期选择器)。然后您可以使用一个日期选择器,而不是100。这样可以加快页面加载速度。

相关内容

  • 没有找到相关文章

最新更新