Javascript jQuery>;在复选框上更改运行代码

Javascript jQuery>;在复选框上更改运行代码,javascript,jquery,Javascript,Jquery,我在清单上有一行“要做的事”,每行都有一个“完成”复选框。用鼠标单击该框后,将运行以下代码并正确发布信息(更新数据库以跟踪任务已完成): 问题是,如果一个人使用选项卡在表单中移动,然后使用空格键选中该框,则不会触发此操作,因为它使用的是mousedown。我尝试将其改为change(),但我的警报框不断出现“false” 这应该是真的,因为我刚刚勾选了这个框,我不明白为什么它会不断出现 我可以使用什么来代替mousedown()来正确发布此代码?尝试使用.change代替.mousedown:

我在清单上有一行“要做的事”,每行都有一个“完成”复选框。用鼠标单击该框后,将运行以下代码并正确发布信息(更新数据库以跟踪任务已完成):

问题是,如果一个人使用选项卡在表单中移动,然后使用空格键选中该框,则不会触发此操作,因为它使用的是mousedown。我尝试将其改为
change()
,但我的警报框不断出现“false”

这应该是真的,因为我刚刚勾选了这个框,我不明白为什么它会不断出现


我可以使用什么来代替
mousedown()
来正确发布此代码?

尝试使用.change代替.mousedown:


我再次将其更改为使用change(),然后移除触发器,我认为这就是不断弹出警报框然后再次更改并循环的原因

$(function(){
        $('[id*="howto_step_complete"]').change(function() {
        var id = $(this).attr('id');
        var howto_used_id = id.substr(id.length - 2);

        var howto_step_minutes = $('#howto_step_minutes' + howto_used_id).val();

        if (!$(this).is(':checked')) { var checked = false; }else{ var checked = true; }
            var value = $('#howto_used_id').val();
            if(howto_step_minutes!=''){
             $.post("updateChecklist.php", { howto_used_id: howto_used_id, howto_step_complete: checked, howto_step_minutes: howto_step_minutes },
                        function(data) {
                        var obj = jQuery.parseJSON(data);
                           var howto_used_id_returned = obj.howto_used_id;
                        var howto_step_complete = obj.howto_step_complete;
                        alert(howto_step_complete);
                   });
            }else{ alert('Minutes must be filled out before checking complete'); }
        });

});

我还检查了var的正确/错误/颠倒。也解决了这个问题。

在change()中,您可以检查复选框是否选中。如果选中,则让代码运行。尽量不要在('change')上使用mousedownUse
.on,这样它将始终发生在事件上。这样我会更成功。为什么会投反对票?看看这个问题:我不能再接受我自己的答案14个小时。我选择我自己的,因为它包含一个完整的解决方案。如您所述,仅仅将其更改为.change()并不能像我所说的那样起作用,我已经尝试过了,并且出现了重复警报框的问题。我的答案包含了一个完整的解决方案,可以反转VAR并移除触发器。
$(function(){
        $('[id*="howto_step_complete"]').change(function() {
        var id = $(this).attr('id');
        var howto_used_id = id.substr(id.length - 2);

        var howto_step_minutes = $('#howto_step_minutes' + howto_used_id).val();

        if (!$(this).is(':checked')) { var checked = false; }else{ var checked = true; }
            var value = $('#howto_used_id').val();
            if(howto_step_minutes!=''){
             $.post("updateChecklist.php", { howto_used_id: howto_used_id, howto_step_complete: checked, howto_step_minutes: howto_step_minutes },
                        function(data) {
                        var obj = jQuery.parseJSON(data);
                           var howto_used_id_returned = obj.howto_used_id;
                        var howto_step_complete = obj.howto_step_complete;
                        alert(howto_step_complete);
                   });
            }else{ alert('Minutes must be filled out before checking complete'); }
        });

});