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。但它的作用是, 当选中数组中的第一个复选框时,它不会发出任何警报!
当我取消选中它时,它会提醒“未检查”。然后对于数组中的第二个复选框,它会立即显示已选中并且未选中&#39;未选中&#39;什么时候不加以控制。
除此问题外,警报假设每次更改事件时都会显示一次。但它会记住点击复选框的次数以及弹出的次数。例如,第一个复选框首先检查但没有显示。所以我取消了它,(2次完成)。警报现在显示两次。我检查并取消选中第二个复选框(现在已经4次)。警报出现4次!
为什么会这样? SOmeone请解释一下。
答案 0 :(得分:0)
您已将事件限制两次,首先执行此操作
<input type="checkbox" onchange="searchcourse()" />
然后你做
function searchcourse(param) {
$("input[type=checkbox][id^=level]").change(function() {
// stuff
});
}
因此每次触发更改事件时,searchcourse
函数都会触发,并绑定一个新的事件处理程序,并且它会保持多次,2次,4次,8次等。
只需删除HTML中的onclick
处理程序和函数,只保留jQuery事件处理程序
答案 1 :(得分:0)
你的功能是错误的,因为你在onchange事件中调用它并且这个函数也使用了事件更改,所以你遇到了关于有大量弹出窗口的问题。
我建议使用的是使用onclick事件并调用你的函数,但只需使用你的if代码
function searchcourse(check,param){
if($(check).is(":checked")) alert($(check).attr("id"));
else alert("not checked");
}
我希望它有所帮助
此致