我在清单上有一排“待办事项”,每一行都有一个“已完成”复选框。用鼠标单击该框后,以下代码将运行并正确发布信息(更新数据库以跟踪任务已完成):
   $(function ()
 {
     $('[id*="howto_step_complete"]').mousedown(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 = true;
         }
         else
         {
             var checked = false;
         }
         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);
             });
             $(this).trigger("change");
         }
         else
         {
             alert('Minutes must be filled out before checking complete');
         }
     });
 });
问题是,如果一个人使用制表符在表单中移动,然后使用空格键来选中该框,则不会触发,因为它使用的是 mousedown。我尝试将其更改为,change()但随后我的警报框不断出现“错误”。
这应该是真的,因为我刚刚检查了该框,但我不明白为什么它会不断出现。
我可以使用什么来代替mousedown()正确发布此代码?