使用jquery在同一按钮上调用不同的操作

时间:2011-10-20 14:54:38

标签: jquery jsf primefaces

我在certHolderAddressChange屏幕上有一个Save按钮,如下所示:

<p:commandButton id="cmdSave" value="#{label.Save}" action="save" update="certHolderAddressChange" />

在此屏幕中有一个复选框。要求是:选中此复选框并单击“保存”按钮后,将打开一个弹出窗口。弹出窗口包含2个按钮:是和否。单击是按钮,它会调用不同的操作。这是弹出代码:

<p:dialog header="#{label.primaryAdd}" widgetVar="dlg1" showEffect="bounce" hideEffect="explode" appendToBody="true">
    <h:panelGrid columns="2">
        <h:outputText value="#{label.msgPrimary}" />
        <p:spacer width="30" height="10" />
        <h:outputText />
        <p:spacer width="30" height="10" />
    </h:panelGrid>
    <div align="center">
        <p:commandButton immediate="true" value="#{label.yes}" action="makeAdd"/>
        <p:spacer width="10" height="5" />
        <p:commandButton value="#{label.no}" onclick="dlg1.hide()" type="button"/>
    </div>
</p:dialog>

如果未选中复选框并单击“保存”按钮,则会调用简单的"save"操作(不会打开弹出窗口)。为了实现这一点,我使用jQuery并在复选框的基础上触发操作。这是jQuery代码:

<div>
    <h:inputHidden value="#{certHolderDetail.primaryInd}" id="primaryID" />
</div>
<script>
    jQuery("#cmdSave").click(function(e) {
        var textvalue = jQuery('#primaryID').val();
        if (textvalue == 'true') {
            dlg1.show();
        } else {
            jQuery("#save").click();
        }
    });                 
</script> 

它正在运行,但问题是在每个条件下调用"save"动作。但是,我是从按钮中删除action="save",然后其他部分不起作用。只有if条件适用于jQuery代码。

我想根据条件致电"save""makeAdd"行动。我怎样才能做到这一点?

同样在每个条件(选中或取消选中复选框)中,每次都会触发“保存”操作。我想在选中复选框时停止保存操作.....

1 个答案:

答案 0 :(得分:0)

不确定您使用的是哪个版本的jQuery

1.6+这就是你想要的

jQuery("#cmdSave").click(function(e) {
        var textvalue = jQuery('#primaryID').prop('checked');
        if (textvalue == true) {
            dlg1.show();
        } else {
            jQuery("#save").click();
        }
    }); 

&lt; 1.6+这将起作用

jQuery("#cmdSave").click(function(e) {
        var textvalue = jQuery('#primaryID').attr('checked');
        if (textvalue == 'checked') {
            dlg1.show();
        } else {
            jQuery("#save").click();
        }
    });