以下代码如何解决?我阻止了对事件的默认操作。然后我想检查一下盒子。
HTML
<input type="checkbox" class="checkbox" />
javsacript
$('.checkbox').click( function(e) {
e.preventDefault();
// some logic happens... now i may decide to check the box (in this case we want to check it for testing)
$('.checkbox').prop('checked',true);
});
你会认为点击复选框仍然会勾选方框..但它没有。检查小提琴,看看我的意思。
我也试过使用attr
功能而没有任何运气。
答案 0 :(得分:2)
您必须将设置“checked”属性的代码放在单独的事件循环中:
setTimeout(function() { $('.checkbox').prop('checked', true); }, 1);
在事件处理程序返回后,浏览器或库必须取消设置复选框,因为它会在调用处理程序之前设置它以响应单击。
答案 1 :(得分:0)
$('.checkbox').click( function(e) {
// do some logic that returns true or false
if (!mylogic) {
return false;
// returning false will prevent the checkbox to be checked.
}
});
答案 2 :(得分:0)
之所以发生这种情况,是因为您使用的是click
处理程序。如果将其切换为change
处理程序,它将可以正常工作。
$('.checkbox').on('change', function(e) {
e.preventDefault();
$('.checkbox').prop('checked',true);
});