javascript - 无法正确提醒已选中复选框的 ID

标签 javascript php jquery

php&html

<?php
 $param=$_GET['param'];
 $sql= "SELECT * FROM categories,main_category WHERE categories.main_cat_id=main_category.main_cat_id AND categories.main_cat_id='$param'";
 $stmt = $pdo->query($sql); 
?>

              <table class="small-12 medium-12 large-12 medium-centered large-centered columns pop_tbl"><tr>
              <?php
              $i=0;
              while($row = $stmt->fetch(PDO::FETCH_ASSOC))
              {
                  $i++;
                  //echo $i;

              ?>
             <td>
             <label for="level_<?php echo $row['catid'];?>">
              <input type="checkbox" class="level" id="level_<?php echo $row['catid'];?>" value="<?php echo $row['catid'];?>" onchange="searchcourse('<?php echo $row['catid'];?>')">
             <span></span>
              <?php echo $row['catname'];?>

              </label>
             </td>

              <?php
              if($i==2)
                  {
                      echo"</tr><tr>";
                      $i=0;
                  }
              }
              ?>
        </tr></table>

脚本

function searchcourse(param)
{$("input[type=checkbox][id^=level]").change(function() {  

  if($(this).is(":checked")) {
   alert($(this).attr("id"));
  } else {
   alert("not checked");
  }


});
}

情况是,当选中该复选框时,将调用 searchcourse 函数。我希望这个函数能够识别复选框是否被单击,然后提醒选中的复选框的 ID。但它的作用是, 当选中数组中的第一个复选框时,它不会发出任何警报!

当我取消选中它时,它会提醒“未选中”。然后,对于数组中的第二个复选框,它在选中时立即表示已选中,在未选中时表示“未选中”。

除此问题外,警报应该在每次事件更改时出现一次。但它会记住单击复选框的次数以及弹出的次数。例如,第一个复选框首先被选中,但什么也没显示。所以我取消了它,(已经两次了)。该警报现在显示两次。当我选中并取消选中第二个复选框时(现在已经选中了 4 次)。所以警报出现了 4 次!

为什么会这样呢?有人请解释一下。

最佳答案

您已绑定(bind)事件两次,首先执行此操作

<input type="checkbox" onchange="searchcourse()" />

然后你就这么做了

function searchcourse(param) {

    $("input[type=checkbox][id^=level]").change(function() {  

        // stuff

    });
}

因此,每次更改事件触发时,searchcourse 函数都会触发,并绑定(bind)一个新的事件处理程序,并且它会不断乘法,2 次、4 次、8 次等。

只需删除 HTML 中的 onclick 处理程序和函数,仅保留 jQuery 事件处理程序

关于javascript - 无法正确提醒已选中复选框的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30760867/

相关文章:

php - 动态图库

php - 如何使用 api.dpd.co.uk api 与 php 集成

javascript - 清空并追加元素的扩展高度

php - 使用 mysql 和 codeigniter 检查 sum(amount) 的条件

javascript - 音频元素中的自动播放属性偶尔工作

javascript - 在 JSON 中使用模板文字 (discord.js)

javascript - 有什么方法可以知道 npm 包是否具有特定于操作系统的构建要求?

javascript - 带有 anchor 标记和隐藏 Div 的 jQuery 选择器问题

javascript - 将 Javascript 变量放入 PHP 变量中

jquery - Grails:request.JSON 从哪里来?如何使用 jQuery 的 .ajax() 或 .post() 将内容放在那里?