PreventDefault直到功能结束才起作用

PreventDefault直到功能结束才起作用

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

10-09 18:13