如何防止单击jQuery中的复选框的默认事件?

时间:2014-08-04 01:39:10

标签: jquery checkbox

我的目标是控制是否可以根据许多变量选中或取消选中复选框。如果我无法停止单击复选框的默认行为,那么我无法实现该目标。

对于初学者来说,当我的用户点击一个复选框时,我希望在点击之前得到它的检查/未检查状态,以便我可以运行一些if语句。这是我正在使用的代码。

$( "body" ).on( "click", "input", function(event) {

  event.preventDefault();

  if ( $(this).prop('checked') ) {
    alert("true");
  }
  else {
    alert("false");
  };

});

以下是codepen上的演示:http://codepen.io/jimmykup/pen/lAmzy

当我点击未经检查的输入时,选中该复选框,我会收到一条说明checked = true的警告。但是这应该是假的,因为在我点击之前复选框是空的。我清除了警报,复选框又变回空白。据我所知,event.preventDefault();应该停止检查复选框。但这似乎并不是正在发生的事情。我错过了什么?

之后,一旦我有了预点击值,我想根据一些if语句检查或取消选中输入。我需要使用event.preventDefault();在mousedownmouseupclick上执行此操作?如果是这样,是否有一种有效的方式来覆盖这三种?

2 个答案:

答案 0 :(得分:3)

您是否尝试过mousedown事件而不是点击?

答案 1 :(得分:2)

DEMO

您必须使用mousedown事件,以便在不激活点击的情况下读取复选框的值。然后你可以使用click

触发元素的.trigger()
$( "body" ).on( "mousedown", "input", function(event) {


  if ( $(this).prop('checked') ) {
    alert("true");
  }
  else {
    alert("false");
  };

  $(this).trigger("click");
});