如果您有一个JSF <h:commandLink>(使用a的onclick事件<a>来提交当前表单),那么在执行操作之前如何执行JavaScript(例如请求删除确认)?
在我的JSF 2 Web应用程序中,我使用以下代码根据selectedStatus显示和切换rich:dataTable的内容:
<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>
Run Code Online (Sandbox Code Playgroud)
dataTable包含a4j:commandLink,在更改表内容后无意中需要在某些IE版本中双击 - 我发现,执行以下Javascript代码(在IE的调试控制台上,在表内容更改后)解决了问题:
document.getElementById(<dataTableClientId>).focus()
Run Code Online (Sandbox Code Playgroud)
我的问题是:在表格内容发生变化后,如何实现javascript代码的自动执行?
当每个字段失去焦点时,我想验证表单中的每个字段,当发生这种情况时,我希望这些操作发生:
1)在字段的右侧出现一个图像,一个.gif(表示系统正在检查用户输入)
2)当完成时出现另一个.gif(例如,取决于输入,'sucess.gif'或'error.gif')和右侧的消息.
我不想使用弹出窗口或类似的东西,用户将失去可用性,我不想要这个.
我正在尝试做这样的事情,这是我到目前为止所做的:
<h:form id="form">
<h:panelGrid columns="3" >
<h:outputLabel for="first_name" value="First Name:" />
<h:inputText id="first_name" value="#{register.bean.firstName}" >
<f:ajax event="blur" render="m_first_name" />
</h:inputText>
<a4j:status name="ajaxStatus">
<f:facet name="start">
<h:graphicImage name="loader.gif" library="images" />
<h:outputText value="Processing ..." />
</f:facet>
</a4j:status>
<a4j:commandButton value="Register !" action="#{register.validateName}" status="ajaxStatus" />
</h:panelGrid>
</h:form>
Run Code Online (Sandbox Code Playgroud)
我正在寻找谷歌的一些解决方案
<a:a4j ... >
Run Code Online (Sandbox Code Playgroud)
因为onbegin和oncomplete属性,我是最好的选择.在JSF 2中的某些本地标记中有一些属性吗?
更新:@BalusC方法:
<!DOCTYPE html>
<html lang="pt-br"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Insert title here</title>
<script type="text/javascript">
function showProgress(data) {
var inputElement = data.source; // …Run Code Online (Sandbox Code Playgroud)