通过jQuery

时间:2017-10-02 18:31:22

标签: javascript jquery html asp.net checkbox

我有一种情况,我想检查所有复选框,其中用户角色对应于我从数据库返回的RoleId,如下所示:

 $(document).on("click", ".btnEdit", function () {
            user_id = $(this).val();

            untickAll();
            $.post("/Administrator/GetUserData", { id: $(this).val() }, function (data) {
                console.clear();
                $.each(data.user.Roles, function (i, item) {
                    for (var j = 1; j <= 4; j++) {
                        if ($("#check" + j).attr("roleid") == item.RoleId) {
                            tickCheckbox(j.toString());
                            console.log("Ticked: #" + j + " checkbox");
                        }
                    }
                });
            });
        });

data.user.Roles对象数组包含以下值:

RoleId: 1
RoleId: 2 
// and so on...

现在我已将静态属性添加到名为“roleid”的HTML元素中,其中每个复选框都具有相应的角色,如下所示:

 <div class="col-sm-4">
                        <h4>User roles:</h4>
                        <div class="am-checkbox">
                            <input id="check1" roleid="1" type="checkbox">
                            <label for="check1">Role 1</label>
                        </div>
                        <hr />
                        <div class="am-checkbox">
                            <input id="check2" roleid="2" type="checkbox">
                            <label for="check2">Role 2</label>
                        </div>
                        <hr />
                        <div class="am-checkbox">
                            <input id="check3" roleid="3" type="checkbox">
                            <label for="check3">Role 3</label>
                        </div>
                        <hr />
                        <div class="am-checkbox">
                            <input id="check4" roleid="4" type="checkbox">
                            <label for="check4">Role 4</label>
                        </div>
                        <hr />
                 </div>

请注意我如何计算复选框值:

check1 => corresponds exactly to role id = 1
check2 => correspodnds exactly to role id = 2
// and so on...

现在问题出现在这里,请注意方法untickAll():

   function untickAll() {
            for (var i = 1; i <= 4; i++) {
                $('#check' + i).prop('checked', false);
            }
        }

每次单击按钮编辑时,方法取消(重置)所有复选框...

现在在使用jQuery进行foreach循环时,我检查特定的复选框是否包含属性“roleid”,该属性与DB中的属性相对应,如果有,我将勾选复选框...

当我调用方法时,会出现问题:

untickAll();

一旦我这样做,每次所有复选框都因某种原因而未经检查...

我还放了console.log("Ticked: " + j + " checkbox");

if语句是否通过以查看它是否尝试检查特定的复选框,并且它确实在控制台中输出如下:

"Ticked #1 checkbox"

但是由于某种原因,复选框仍未选中...

如果我删除untickAll();方法,复选框只在我第一次单击编辑按钮时被检查,下次它只会继续检查匹配的值(不像我想的那样首先重置它们)......

我在这里做错了什么?

0 个答案:

没有答案