我有一个复选框,我试图根据其位置发送一个ajax请求。默认情况下是这样。我希望能够单击它,并得到一个对话框,询问我是否要放弃所做的更改,并且此对话框取决于复选框尚未为假的事实。
$("input[type='checkbox']").click(function(evt) {
evt.preventDefault();
alert(this.checked);
if(checkEdited()){
var result = confirm("Do you want to continue?");
}
});
function checkEdited(){
var checkbox = $("div.managerContent input[type='checkbox']");
if(!checkbox.checked){
return false;
}
else{
//check other stuff
}
}
每次,我都会在警报中得到
false
。在浏览器中,当我单击复选框时,支票消失了,我得到了警报,然后支票又回来了。checkEdited()也用在其他地方我到处寻找如何停止复选框更改事件并在以后为其分配值,只是告诉我使用.click和e.prenventDeafult()
有任何想法吗?非常感谢!
最佳答案
您应该尝试在点击完成之前捕获事件,可以使用mousedown
来做到这一点,如下所示:
$("input[type='checkbox']").on('mousedown',function(evt) {
evt.preventDefault();
alert(this.checked);
});
这是一个演示,其中包含在更改之前捕获它的工作示例
JSFIDDLE DEMO
关于javascript - event.PreventDefault直到功能结束才起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25084124/