Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery复选框选中和取消选中不正常工作_Javascript_Jquery_Html_Checkbox - Fatal编程技术网

Javascript Jquery复选框选中和取消选中不正常工作

Javascript Jquery复选框选中和取消选中不正常工作,javascript,jquery,html,checkbox,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) {

我有一个脚本,它应该根据从下拉列表中选择的用户名来选中和取消选中以下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);
            }
        }
    });
});
$(“#用户名”)。更改(函数(){
var user_id=this.value;
$.ajax({
键入:“获取”,
url:“管理员/获取用户权限/”+用户id,
数据类型:“JSON”,
成功:功能(响应){
$(“输入:复选框”).attr(“选中”,false);
对于(i=0;i

我遇到的问题是,当我选择用户名时,复选框没有被选中,因为行:
$(“输入:复选框”).attr(“选中”,false)但是当我删除它时,它会检查它们,但不会删除以前选中的复选框。我如何解决这个问题

使用
prop
而不是
attr
。将代码更改为:

$("input:checkbox[value=" + value + "]").prop("checked", true);
$("input:checkbox[value=" + value + "]").prop("checked", true);
你必须使用而不是。将代码更改为:

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

使用
.prop(“checked”,true)
而不是
.attr(..
如果你看一下这个:,它说的是新的jQuery 1.6.1的发布,他们已经改变了
.attr()
处理布尔值的方式。好的。现在有意义了。请始终注意解释操作码更改的原因。这很有意义。仅仅代码不是答案。