如何在单击时获取复选框的值



我有一个html表格,每行都有一个动态创建的复选框。复选框的选中状态是根据数据库中的值设置的。在 html 表中选中复选框时,我需要捕获更改并设置值,以便在选中该框时,值=1 否则值=0。值将传递给更新查询。我不确定如何使用我当前的代码完成此操作。

.HTML:

<?php 
$sqlGetEmployees = "select e.employeeID, e.lastName, e.firstName, l.number, p.name, e.gradeCertLevel, e.serviceYears, e.step, e.certified from employee e join location l on l.locationID = e.locationID join position p on p.positionID = e.positionID";
$stmtGetEmployees = mysqli_prepare($db,$sqlGetEmployees);
mysqli_stmt_execute($stmtGetEmployees);
mysqli_stmt_bind_result($stmtGetEmployees, $id, $lastName, $firstName, $number, $name, $gradeCertLevel, $serviceYears, $salaryStep, $certified);
$count = 1; 
while(mysqli_stmt_fetch($stmtGetEmployees))
{
$checkedCertified = ($certified == '1') ? 'checked="checked"':'';
?>
<tr>
<!-- other table data -->
<td> 
<div id='certified_<?php echo $id; ?>'>
<input contentEditable='true' class='edit' type='checkbox' id='certified' <?php echo $checkedCertified; ?> />
</div> 
</td>
</tr>
<?php
$count ++;
}
mysqli_stmt_close($stmtGetEmployees);
?>  

脚本:

// Add Class
$('.edit').click(function(){
$(this).addClass('editMode');
});
// Save data
$(".edit").focusout(function(){
$(this).removeClass("editMode");
var id = this.id;
var split_id = id.split("_");
var field_name = split_id[0];
var edit_id = split_id[1];
var value = $(this).text();
$.ajax({
url: 'update.php',
type: 'post',
data: { field:field_name, value:value, id:edit_id },
success:function(response){
console.log('Save successfully');               
}
});
});

更新 PHP

$field = $_POST['field'];
$value = $_POST['value'];
$editid = $_POST['id'];
$checkedStatus = $_POST['checked'];
if($field == "certified")
{
$sqlUpdateCertified = "UPDATE employee SET ".$field."=? WHERE employeeID= ?";
$stmtUpdateCertified = mysqli_prepare($db,$sqlUpdateCertified);
mysqli_stmt_bind_param($stmtUpdateCertified, "ss",$checkedStatus,$editid);
mysqli_stmt_execute($stmtUpdateCertified);
mysqli_stmt_close($stmtUpdateCertified);
}

对于动态创建的元素,事件处理方式如下:

$(document).on('click', '.edit', function(e) {
//e.preventDefault();
var checkedStatus = 0;
if ($(this).is(':checked')) {
$(this).addClass('editMode');
checkedStatus = 1;
} else {
checkedStatus = 0;
$(this).removeClass("editMode");
}  
var id = this.id;
var split_id = id.split("_");
var field_name = split_id[0];
var edit_id = split_id[1];
var value = $(this).text();
$.ajax({
url: 'update.php',
type: 'post',
data: { field:field_name, value:value, id:edit_id, checked: checkedStatus },
success:function(response){
console.log('Save successfully');               
}
});
});

若要将所有内容放在单个事件处理程序中,可以将所有内容放入 .click 或 .focusout 中,具体取决于您要实现的目标。