チェックリストに「ToDo」の行があり、各行には「Completed」チェックボックスがあります。マウスでボックスをクリックすると、次のコードが実行され、情報が正しく投稿されます(タスクが完了したことを追跡するためにデータベースが更新されます)。
$(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');
}
});
});
問題は、ユーザーがタブを使用してフォーム内を移動し、代わりにスペースバーを使用してチェックボックスをオンにした場合、マウスダウンを使用しているため、これがトリガーされないことです。これをchange()
代わりに変更しようとしましたが、アラートボックスが「false」で何度も表示され続けます。
チェックボックスをオンにしたばかりで、なぜそれが継続的に表示されるのか理解できないので、それは本当のはずです。
mousedown()
このコードを正しく投稿する代わりに何を使用できますか?