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

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

我正在尝试获取复选框的值(true或false),并在while函数中更新行的数据库。但是,复选框似乎只记录了值的变化,这取决于第一行。例如,如果选中行1复选框,则值=true。然后我可以单击下面的行,并将checkbox值设置为true。但是,当我单击第一行以外的行以获取false时,它只会在第一行复选框未选中时注册。我认为这与行id有关,但尝试了很长时间来修复此问题,但无法修复。请帮忙。
html/php格式

  1. while($row = $result->fetch_assoc()) {
  2. echo
  3. '
  4. <input type="checkbox" name="home['.$row["id"].']" id="'.$row["id"].'" '.($row["home"]>0 ? 'checked="checked"' : '').'>
  5. <label for="'. $row["id"].'"></label>

jquery查询

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

php/mysql

  1. if ($home == 'true') {
  2. $check = date("Ymd");
  3. } else {
  4. $check = '';
  5. }
  6. if(isset($_POST["home"])) {
  7. $sql = "UPDATE addresses SET home='$check' WHERE id='$id'";
  8. if($mysqli->query($sql) === TRUE){
  9. } else {
  10. echo "error" . $sql . "<br>".$mysqli->error;
  11. }
  12. }
0s0u357o

0s0u357o1#

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

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

vcudknz32#

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

py49o6xq

py49o6xq3#

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

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

gpnt7bae4#

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

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

相关问题