我的目标是控制是否可以根据许多变量选中或取消选中复选框。如果我无法停止单击复选框的默认行为,那么我无法实现该目标。
对于初学者来说,当我的用户点击一个复选框时,我希望在点击之前得到它的检查/未检查状态,以便我可以运行一些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();在mousedown
,mouseup
和click
上执行此操作?如果是这样,是否有一种有效的方式来覆盖这三种?
答案 0 :(得分:3)
您是否尝试过mousedown事件而不是点击?
答案 1 :(得分:2)
您必须使用mousedown
事件,以便在不激活点击的情况下读取复选框的值。然后你可以使用click
.trigger()
$( "body" ).on( "mousedown", "input", function(event) {
if ( $(this).prop('checked') ) {
alert("true");
}
else {
alert("false");
};
$(this).trigger("click");
});