event.PreventDefault直到函数结束才起作用

时间:2014-08-01 15:56:05

标签: javascript

我有一个复选框,我试图根据其位置发送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()

有什么想法吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

您应该在点击完成之前尝试捕获事件,您可以使用mousedown执行此操作,如下所示:

$("input[type='checkbox']").on('mousedown',function(evt) {
      evt.preventDefault();
      alert(this.checked);
});

这是一个演示,其中包含在更改之前捕获它的工作示例

JSFIDDLE DEMO