Javascript 阻止在复选框值更改时调用onchange事件
我想防止在toggleBillableChkBox方法中切换selectbooleancheckbox的值时触发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
<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。