테이블에 jQuery datepicker를 사용하여 JSF 웹 앱이 있습니다. 테이블은 각 문서 옆에있는 문서 목록을 보여 주며 id를 통해 jQuery datepicker에 바인드되는 날짜 입력 필드를 갖습니다. jquery 스크립트를 xhtml 파일 맨 위에 넣으면로드가 빠릅니다.JQuery Datepicker 테이블, IE7, JSF App에서 느린 로딩
문제는 테이블의 일부가 Iceworks 1.8.2를 사용하여 업데이트 된 아약스를 가져올 때 jQuery가 해당 날짜 입력 필드 ID를 더 이상 찾을 수 없다는 점입니다. 내가 아약스라고 부르는 것은 나열된 문서 제목에 대한 검색 기능을 가지고 있으며 일단 검색이 끝나면 결과 목록을 표시해야합니다. 그러나 결과 목록, 달력 복용량 표시되지 않습니다, 나는 jQuery 그 dynmically 생성 된 목록 입력 필드 ID를 잃은 것 같아요.
입력 날짜 필드 바로 앞에 jQuery 자바 스크립트를 넣은 다음 작업이 시작되었습니다. 제목 검색 후 documetation 제목의 결과 목록이 datepicker와 함께 나타납니다.
하지만 문제는 페이지로드가 30 초가 넘는 매우 느린 initail 페이지 로딩입니다. 테이블 행은 그다지 많지 않습니다. 약 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>
답장을 보내 주셔서 감사합니다. 예, 사용자가 선택할 수 있도록 각 문서 옆에 캘린더가 있어야한다는 비즈니스 요구 사항입니다. 그리고이 앱은 이미 4 년 동안 운영되었습니다. Icefaces1.8.2 달력은 IE (obay z-index가 아닌)에 버그가있어서 다른 캘린더를 사용하도록합니다. – Charles
제 제안은 각 행에서 날짜 피커 초기화를 제거하기 위해 각 행에서 날짜 피커 단추를 제거하지 않는 것입니다. 버튼을 클릭 할 때까지 그냥 init을 지연 시키더라도 빠릅니다. – joekarl
알겠습니다. 나는 그 아이디어를 시도 할 것이다. 사용자가 클릭 할 때 datepicker를 호출하는 명령 단추가 있습니다. 감사. 그건 그렇고, 파이어 폭스는 매우 빨리 로딩이 문제가 없습니다. 하지만 IE7은 우리 회사의 IT 만 지원하는 브라우저입니다. – Charles