限制用户在单击时选择的复选框数

时间:2014-06-17 16:48:46

标签: javascript cakephp

我们有一些对应不同类别的复选框。我们希望限制用户一次仅检查3个复选框,因此我在检查超过3个类别时设置了警报。

<?php 
$countC = 0;
$count = 0; 
foreach($fcategories as $fvalue) {?>
<label>
<input class="group1" type="checkbox" name="catCheck[]" onclick="chkcontrol(<?php e($count)?>);" value="<?php e($fvalue['Qna_category']['id']);?>" ></input>
<?php e($fvalue['Qna_category']['category']);?></label><br/><?php $count++; }?>

功能chkcontrol();

<script type="text/javascript">
function chkcontrol(count) {
    var msg= '';
    var done = false;
    if(count >= 3) {
        msg = "Maximum 3 categories"
        done = true;
    }
    if(done) {
        alert(msg);
    return ;
    }
}
</script>

我的问题是警报弹出窗口打开,但它没有删除第4个单击的复选框&amp;除了消息弹出窗口之外,还可以阻止用户检查超过3个框。

1 个答案:

答案 0 :(得分:0)

您的代码现在有点不方便。要阻止选择发生,您需要在onclick事件上event.preventDefault(),但因为它是count参数取代事件参数。

解决方法是取消选中它:

if (count >= 3) {
    this.setAttribute("checked", "");
}

混合使用PHP和JavaScript通常会给您带来不便的代码。最好将PHP中的任何相关状态序列化为JavaScript,例如:

var num_selected = <?php echo json_encode($count);?>