Javascript 在复选框中使用preventDefault单击事件

Javascript 在复选框中使用preventDefault单击事件,javascript,jquery,checkbox,click,preventdefault,Javascript,Jquery,Checkbox,Click,Preventdefault,我有一个复选框,要求当用户单击它时,不要立即改变它的状态,而是弹出一个模式窗口,询问他们是/否问题。根据他们的回答,复选框应该被选中或保持未选中状态 我认为应该使用Event.preventDefault()来处理此要求,但当我尝试这样做时,我发现当我退出事件处理程序时,复选框将恢复为其原始状态,而不管我在处理程序中设置状态的编程尝试如何 $(函数(){ $(“:复选框”)。单击(函数(e){ e、 预防默认值(); $(this.prop(“选中”),confirm(“确认以选中复选框”);

我有一个复选框,要求当用户单击它时,不要立即改变它的状态,而是弹出一个模式窗口,询问他们是/否问题。根据他们的回答,复选框应该被选中或保持未选中状态

我认为应该使用
Event.preventDefault()
来处理此要求,但当我尝试这样做时,我发现当我退出事件处理程序时,复选框将恢复为其原始状态,而不管我在处理程序中设置状态的编程尝试如何

$(函数(){
$(“:复选框”)。单击(函数(e){
e、 预防默认值();
$(this.prop(“选中”),confirm(“确认以选中复选框”);
});
})

点击我

问题是因为您调用了
preventDefault()
。在这种情况下不需要它,因为
checked
状态完全取决于
confirm()
调用的结果

还请注意,在处理复选框时,应使用
更改
事件,而不是
单击
。试试这个:

$(函数(){
$(“:复选框”).change(函数(e){
$(this.prop(“选中”),confirm(“确认以选中复选框”);
});
})

点击我

问题是因为您调用了
preventDefault()
。在这种情况下不需要它,因为
checked
状态完全取决于
confirm()
调用的结果

还请注意,在处理复选框时,应使用
更改
事件,而不是
单击
。试试这个:

$(函数(){
$(“:复选框”).change(函数(e){
$(this.prop(“选中”),confirm(“确认以选中复选框”);
});
})

点击我