2013-10-21 37 views
8

以我JSF 2的web應用程序,我使用下面的代碼來顯示並切換豐富的內容:根據selectedStatus dataTable中:JSF˚F後執行的JavaScript: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> 

數據表包含A4J:在更改表格內容後,無意中需要在某些IE版本中雙擊該命令 - 我發現,執行以下Javascript代碼(在IE的調試控制檯上,在表內容發生變化後)解決了這個問題:

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

我的問題是:我該如何實現表內容更改後自動執行JavaScript代碼?

+0

你可以做一個測試嗎?取出** ** –

+0

我試過了,結果:如果我拿出這個標籤,在firefox中一切都很好,但是在IE版本造成麻煩的時候,變得更糟:切換表格內容將不起作用,通過單擊錯誤的單選按鈕來切換表格...... –

+1

正如您使用的是:selectOneRadio嘗試將事件更改爲onchange而不是單擊。點擊事件發生在您選擇選項中的選項之前。 –

回答

21

爲了在f:ajax後調用JS代碼如下內嵌解決方案將做

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

也看看這個答案:JSF and Jquery AJAX - How can I make them work together?

此外,仔細檢查event="click"的需要你的f:ajax,導致默認事件h:selectOneRadiochange,我認爲你最好使用...