2014-10-09 51 views
0

我有一个带有几个按钮和一个表示“删除用户数据”的链接的表单。点击链接后,在任何操作发生之前显示确认弹出窗口。下面是该代码:在随机表单域上输入时执行的JSF commandButton

<p:confirmDialog closable="false" 
    header="#{bundle['remove.user.data']}" 
    message="#{bundle['remove.user.data.text']}" 
    severity="alert" widgetVar="deleteUserPopup"> 
    <h:commandButton 
     actionListener="#{userBean.deleteUserData}" 
     value="#{bundle['yes']}" immediate="true" 
     onclick="deleteUserPopup.hide()"> 
      <f:attribute name="userId" 
       value="#{userBean.user.id}" /> 
      <f:ajax execute="@this" render="@all" /> 
    </h:commandButton>  
    <h:commandButton value="#{bundle['no']}" 
     onclick="deleteUserPopup.hide()" type="button" /> 
</p:confirmDialog> 

<div> 
    <h:commandLink> 
     <h:outputText value="#{bundle['remove.user']}" /> 
     <h:graphicImage name="remove.png" library="img" 
      title="#{bundle['remove.user']}" /> 
     <f:ajax event="click" 
      onevent="deleteUserPopup.show()" /> 
    </h:commandLink> 
</div> 

在窗体中,我有很多领域,但它是有问题的文本字段,因为当用户在里面输入文本和命中上输入的方法deleteUserData立即被呼叫(无确认弹出)。下面是一个例子两个字段代码:

<div> 
    <h:panelGrid columns="2"> 
     <h:column> 
      <h:inputText 
       value="#{userBean.user.lastName}" id="userLastName" /> 
      <h:message for="userLastName" styleClass="warning" /> 
     </h:column> 
     <h:column> 
      <h:inputText 
       value="#{userBean.user.firstName}" id="userFirstName" /> 
       <h:message for="userFirstName" styleClass="warning" /> 
     </h:column> 
    </h:panelGrid> 
</div> 

所有上面的代码(2的div和确认对话框)自带的<h:form> 所以里面,我不明白,为什么输入命令按钮的动作监听器是否被执行?

回答

0

这是正常的HTML行为,一般情况下,输入firstnext类型=“提交”相对于当前输入元件将在进入压机被调用。此页面上的全部答案:Default action to execute when pressing enter in a form

+0

您好,感谢您的建议。不幸的是,没有任何建议的解决方案 - JS输入键的捕获,也没有交换HTML中的按钮,甚至没有增加一个新的第一个按钮的可见性:隐藏。我认为这里的问题不是提交firstnext输入,而是另一个输入。你能否提出另一个解决方法? – Bubolina 2014-10-10 12:47:47

+1

你试过这个吗?您可以使用号码:defaultCommand ID为您的按钮来定义按键时按下 – sQer 2014-10-10 12:55:14

+0

也许简单的解决方法的输入会发生什么:<脚本类型=“文/ JavaScript的”> $(文件)。就绪(函数(){ 如果(e.keyCode == 13){ 返回false; } }); });如果(e.keyCode == 13) – sQer 2014-10-10 13:19:09