我正在尝试获取复选框的值(true或false),并在while函数中更新行的数据库。但是,复选框似乎只记录了值的变化,这取决于第一行。例如,如果选中行1复选框,则值=true。然后我可以单击下面的行,并将checkbox值设置为true。但是,当我单击第一行以外的行以获取false时,它只会在第一行复选框未选中时注册。我认为这与行id有关,但尝试了很长时间来修复此问题,但无法修复。请帮忙。
html/php格式
while($row = $result->fetch_assoc()) {
echo
'
<input type="checkbox" name="home['.$row["id"].']" id="'.$row["id"].'" '.($row["home"]>0 ? 'checked="checked"' : '').'>
<label for="'. $row["id"].'"></label>
jquery查询
$(document).ready(function(){
$('input[type="checkbox"]').on("click", function(){
var on = $('input[type="checkbox"]').prop("checked");
$.post("work/updateaddress.php",{home:on,id:this.id});
});
});
php/mysql
if ($home == 'true') {
$check = date("Ymd");
} else {
$check = '';
}
if(isset($_POST["home"])) {
$sql = "UPDATE addresses SET home='$check' WHERE id='$id'";
if($mysqli->query($sql) === TRUE){
} else {
echo "error" . $sql . "<br>".$mysqli->error;
}
}
4条答案
按热度按时间0s0u357o1#
//使用
this
要引用正在单击的框:vcudknz32#
或者你可以用
input
```$('input[type="checkbox"]').on('input', function(e){
let thisCheckbox = e.target.checked
alert(thisCheckbox)
});
py49o6xq3#
问题是因为您选择了click处理程序中的所有复选框,然后访问
prop()
在该集合上,它将只返回第一个集合的值。相反,使用
this
关键字引用引发事件的复选框。你也应该使用change
事件而不是click
出于可访问性原因:gpnt7bae4#
你应该使用
change
事件而不是click
复选框的事件。