2013-10-21 34 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,我认为你最好使用...