对两者使用相同的按钮事件 Jquery/Primefaces

Use same button event for both Jquery/Primefaces

我在 primefaces 中有一个命令按钮可以更新隐藏的输入,如下所示:

 <html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Wizard Invoice </title>
</h:head>

<h:outputScript library="Scripts" name="stepsWizard.js" />

<h:body>
<h:form>

<p:commandButton id="IdA" value="test" action="#{invoiceWizardBean.someMethod}" update="hid"/>
<h:inputHidden id="hid" type="hidden" name="name1" value="#{invoiceWizardBean.somevalue}" ></h:inputHidden>

<input id="IdB" type="button" value="submit" />  


</h:form>
</h:body>
</html>

单击 IdA 按钮后,我隐藏输入的值在 DOM 中正确更新。(在客户端不使用任何 Jquery),但如果添加一个执行额外操作的方法使用相同的按钮,值不再正确

jQuery(function($) {
var buttonNext = $("#j_idt6\:IdA");
buttonNext.click(function(){
    var valueHidden = $("#j_idt6\:hid")[0].value;
    console.log(valueHidden);
    // valueHidden has the previous value. It is not updated !!
    // Do some operations based in valueHidden value
});
});

如果我更改 jquery 函数并使用 Button IdB,则 valueHidden 是正确的。

重要的是我在客户端使用相同的按钮进行操作。

有什么想法吗?

如果我没理解错的话,你应该使用 <p:commandButtononcomplete ,

像这样

<p:commandButton oncomplete="myJsFunc()" id="IdA" value="test" 
    action="#{invoiceWizardBean.someMethod}" update="hid"/>

将您的客户端逻辑放入名为 myJsFunc

的 javascript 函数中