2013-10-21 20 views
8

Trong ứng dụng web JSF 2 của tôi, tôi sử dụng đoạn mã sau để hiển thị và chuyển đổi các nội dung của một người giàu: DataTable theo selectedStatus:JSF thực thi javascript sau khi f: ajax

<h:selectOneRadio id="statusSelection" value="#{backingBean.selectedStatus}" style="width:auto; float:left;"> 
    <f:selectItem itemValue="AVAILABLE" itemLabel="Available" /> 
    <f:selectItem itemValue="INACTIVE" itemLabel="Inactive" /> 
    <f:ajax render="itemsDataTable" execute="#{backingBean.sortByTitel('ascending')}" /> 
    <f:ajax render="itemsDataTable" event="click" /> 
</h:selectOneRadio> 

DataTable chứa a4j: commandLink s, mà vô tình cần phải được nhấn đúp trong một số phiên bản IE sau khi thay đổi nội dung bảng - tôi phát hiện ra, thực thi mã Javascript sau (trên bảng điều khiển gỡ lỗi của IE, sau khi nội dung bảng đã thay đổi) giải quyết vấn đề:

document.getElementById(<dataTableClientId>).focus() 

Câu hỏi của tôi là: Làm thế nào tôi có thể đạt được tự động thực thi mã javascript sau khi nội dung bảng đã thay đổi?

+0

Bạn có thể làm thử nghiệm không? Đưa ra ** ** –

+0

Tôi đã thử, kết quả: Nếu tôi lấy thẻ này, mọi thứ đều ổn trong firefox, nhưng trong các phiên bản IE gây rắc rối, nó thậm chí tệ hơn: Việc chuyển đổi nội dung bảng sẽ không hoạt động, các bảng chuyển đổi bằng cách nhấp vào nút radio sai, ... –

+1

Khi bạn đang sử dụng ah: selectOneRadio cố gắng thay đổi sự kiện thành thay vì nhấp chuột. Sự kiện nhấp chuột xảy ra trước khi bạn chọn tùy chọn trong lựa chọn. –

Trả lời

21

Để gọi một mã js sau f:ajax giải pháp inline sau đây sẽ làm

<f:ajax render="itemsDataTable" 
    onevent="function(data) { if (data.status === 'success') { 
    document.getElementById('dataTableClientId').focus() } }"/> 

cũng hãy nhìn vào câu trả lời này: JSF and Jquery AJAX - How can I make them work together?

Ngoài ra, hãy kiểm tra nhu cầu của event="click" trong f:ajax của bạn, khiến sự kiện mặc định trong h:selectOneRadiochange mà tôi nghĩ bạn nên sử dụng tốt hơn ...

Các vấn đề liên quan