javascript - Jquery 复选框选中和取消选中效果不佳

标签 javascript jquery html checkbox

我有以下脚本,应该根据从下拉列表中选择的用户名检查和取消选中以下 html 表单:

<div>
    <select name="user_name" id="user_name" class="user_name form-control">
        <option>Please select : </option>
        <?php foreach ($system_users as $value) {
            ?>
            <option value="<?php echo $value['id']; ?>"><?php echo $value['user_name']; ?></option>
            <?php
        }
        ?>
    </select>
</div>

<?php foreach ($reports_functions as $value) {
    ?>
    <input type="checkbox" name="functions[]" id="functions" value="<?php echo $value['id']; ?>"  class="form-control functions reports_functions" /> <?php echo $value['name']; ?>
    <hr>
    <br />

    <?php
}
?>

以下是我的 jquery 脚本:

$("#user_name").change(function () {
    var user_id = this.value;
    $.ajax({
        type: "GET",
        url: "<?php echo base_url(); ?>admin/get_user_permissions/" + user_id,
        dataType: "JSON",
        success: function (response) {
             $("input:checkbox").attr("checked", false);

            for (i = 0; i < response.length; i++) {
                var value = response[i].function_id;
                $("input:checkbox[value=" + value + "]").attr("checked", true);
            }
        }
    });
});

我遇到的问题是,当我选择用户名时,由于以下行而未选中复选框:$("input:checkbox").attr("checked", false); 但当我删除它时,它会检查它们,但不会删除之前检查的复选框。我该如何解决这个问题?

最佳答案

您必须使用prop()而不是attr() 。将代码更改为:

$("input:checkbox[value=" + value + "]").prop("checked", true);

关于javascript - Jquery 复选框选中和取消选中效果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33280311/

相关文章:

javascript - jQuery 选择多个 :nth-child()

javascript - JQuery scrollTop() 函数不滚动

javascript - dd显示样式更改为无

php - jQuery AJAX/POST 不向 PHP 发送数据

javascript - 在里面插入一个动态值

php - 从 MySQL 到 <输入类型 ="datetime-local">

Javascript 在点击时隐藏/显示不起作用

javascript - window.onresize 只调用一次

javascript - 使用 Jquery 设置 cookie

python - Python解析HTML时获取位置信息