当复选框值更改时,阻止调用onchange事件

时间:2014-11-11 15:41:13

标签: javascript jquery jsf primefaces

我希望在toggleBillableChkBox方法中切换值时阻止触发selectbooleancheckbox的onchange事件。

<p:selectBooleanCheckbox value="#{myBean.billableBoolean}" widgetVar="billableEditVar"
    id="billableEdit" onchange="showBillableForEdit(this)">
</p:selectBooleanCheckbox>

function showBillableForEdit(obj){
     if(obj.checked){
        confirmBillableYesEdit.show();
    } else{
        confirmBillableNoEdit.show();
    }
}


<p:confirmDialog id="confirmBYesEditId" header="Please Confirm" severity="alert" visible="false"      
    widgetVar="confirmBillableYesEdit" 
    message="edit Are you sure  you want to invoice this service ?" >
    <p:commandButton value="Yes" oncomplete="confirmBillableYesEdit.hide();" global="false" >
    </p:commandButton>

    <p:commandButton value="No"   onclick="toggleBillableChkBox();"
        oncomplete="confirmBillableYesEdit.hide();">
    </p:commandButton>
</p:confirmDialog>


function toggleBillableChkBox() {
    billableEditVar.toggle();
}

2 个答案:

答案 0 :(得分:1)

您无法阻止我知道的事件被触发,但您可以阻止它对此代码执行任何操作。 (这将替换脚本标记中的onclick):

$('#billableEdit').on('change', function( evt ) {
  evt.preventDefault();
  evt.stopPropagation();
  billableEditVar.toggle();
});

答案 1 :(得分:0)

return false对我来说不起作用。所以我只是在切换之前清除了元素的onchange。

function toggleBillableChkBox() {
   document.getElementById('billableEdit_input').onchange = "";        
   billableEditVar.toggle();
}