如何在函数jquery中标记复选框

How to marked checkbox in function jquery

本文关键字:复选框 jquery 函数      更新时间:2023-09-26

我有一个列表框在视图中。

此列表框使用模板

列表框

<div id="UsersLoad" style="width: 50%">
    @Html.EditorFor(i => i.Users, "UsersForEdit") 
</div>

模板用户编辑(部分代码)

@model string[]
@{        
    if (this.Model != null && this.Model.Length > 0)
    {
        foreach(var item in this.Model)
        {
            listValues.Add(new SelectListItem { Selected = true, Value = item, Text = item });
        }
    }
    else
    {
        listValues = new List<SelectListItem>();
    }    
}
<div class="field-@size @css">
    <h3>@Html.LabelFor(model => model):</h3>
    @Html.ListBoxFor(model => model, listValues, new { id = id })
</div>

在另一个视图中,div 被调用。

function LoadUsersCheckBox() {
    $("#UsersLoad").load('@Url.Action("LoadUsers", "User")' + '?idUser=' + idUser);
}

加载用户控制器

public JsonResult LoadUsers(int? idUser)
{
    var users =  Service.GetSystemUsers(idUser);
    var model = users.Select(x => new
                {
                    Value = x,
                    Description = x
                });
    return this.Json(model, JsonRequestBehavior.AllowGet);
}

控制器方法返回我想要的内容。

但是,它不是选择列表框中的项,而是仅用找到的用户的文本覆盖列表框。

如何在函数LoadUsersCheckBox上标记列表框中的项目?

对不起,我的英语不好

jQuery load() 方法"从服务器加载数据并将返回的 HTML 放入匹配的元素中。请注意单词"返回的 HTML"。请参阅 http://api.jquery.com/load/

若要选择现有项目,应改为尝试get() (http://api.jquery.com/jQuery.get/)。在成功回调处理程序中,您需要将返回的数据解析为数组。然后使用迭代器遍历列表框中的项,如果它们存在于分析的数组中,则将它们标记为选定。像这样:

$.get("action url", function(data) { 
    var users = $.parseJSON(data);
    $("#UsersLoad option").each(function() {
        var opt = $(this),
            value = opt.attr("value");
        opt.removeAttr("selected");    
        if (users.indexOf(value) > -1) {
            opt.attr("selected", "selected");
        }
    });
});