Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阻止在复选框值更改时调用onchange事件_Javascript_Jquery_Jsf_Primefaces - Fatal编程技术网

Javascript 阻止在复选框值更改时调用onchange事件

Javascript 阻止在复选框值更改时调用onchange事件,javascript,jquery,jsf,primefaces,Javascript,Jquery,Jsf,Primefaces,我想防止在toggleBillableChkBox方法中切换selectbooleancheckbox的值时触发onchange事件 <p:selectBooleanCheckbox value="#{myBean.billableBoolean}" widgetVar="billableEditVar" id="billableEdit" onchange="showBillableForEdit(this)"> </p:selectBooleanCheckbox&g

我想防止在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();
}

函数showBillableForEdit(obj){
如果(对象已选中){
confirmBillableYesEdit.show();
}否则{
confirmBillableNoEdit.show();
}
}
函数toggleBillableChkBox(){
billableEditVar.toggle();
}

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

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

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

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

一个简单的
返回false
既可以
防止默认值
也可以
停止播放。
@TrueBlueAussie我总是这样做是为了安全。看到这个问题,要从链接的页面中去掉的是,在jQuery事件处理程序中,returnfalse总是同时执行这两个操作。故事结束了。原始JS事件处理程序。。。这完全是另一回事:)@TrueBlueAussie同意。我倾向于编写比jQuery更简单的JS,这就是为什么我更喜欢上面的内容。您的回答是100%正确的,对于这个问题,两种方法都可以,一行代码通常比两行代码好。:)return false对我不起作用。所以我只是在切换之前清除了元素的onchange。