复选框未返回正确的值jquery/php

drkbr07n  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(279)

我正在尝试获取复选框的值(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;
    }
  }
0s0u357o

0s0u357o1#

//使用 this 要引用正在单击的框:

$(document).ready(function(){
    $('input[type="checkbox"]').on("click", function(){
        var on = $(this).prop("checked");
        $.post("work/updateaddress.php",{home:on,id:this.id});
    });
});
vcudknz3

vcudknz32#

或者你可以用 input ```
$('input[type="checkbox"]').on('input', function(e){
let thisCheckbox = e.target.checked
alert(thisCheckbox)
});

py49o6xq

py49o6xq3#

问题是因为您选择了click处理程序中的所有复选框,然后访问 prop() 在该集合上,它将只返回第一个集合的值。
相反,使用 this 关键字引用引发事件的复选框。你也应该使用 change 事件而不是 click 出于可访问性原因:

$('input[type="checkbox"]').on('change', function(){
  var on = $(this).prop("checked"); // or just this.checked
  $.post("work/updateaddress.php", {
    home: on,
    id: this.id
  });
});
gpnt7bae

gpnt7bae4#

你应该使用 change 事件而不是 click 复选框的事件。

$('input[type="checkbox"]').on('change', function(){
  var on = this.checked
  console.log(on)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" value="a">

相关问题