获取具有特定数据属性值

时间:2018-04-24 10:10:06

标签: javascript c# jquery model-view-controller custom-data-attribute

我有一个数据表,其中包含一个复选框,用户可以选择该复选框导出记录或编辑记录。对于编辑,复选框有一个数据属性,用于显示特定数据集是否可编辑(基于用户权限)。

我正在尝试获取复选框值的列表,其中复选框已选中且数据属性的值为" True"。

在我的视图模型中,我有以下字段:

        public bool ShortageIsEditable {get;set;}

这在视图模型映射器中设置为true或false,具体取决于记录的状态和用户的权限。

在我看来,我有一个表格,其中包含以下每个记录的数据属性复选框:

 @(Html.Kendo().Grid(item.Shortages)
              .Name(string.Format("ShortagesGrid_{0}", item.Id))
              .Columns(columns =>
              {
                  columns.Template(GetViewLink)
                         .Title("View")
                         .Width(38);


                  columns.Template(o => "<input type=\"checkbox\" name=\"selectedRequestId\" " + (o.IsSelected ? "checked=\"checked\"" : "") + "class=\"myCssCheckAllCheckBox\"  value=\"" + o.ShortageNo + "\"  data-iseditable=\"" + o.ShortageIsEditable + "\"/>")
                         .Width(30);

                  columns.Bound(o => o.ShortageNo)
                         .Title("Shortage #")
                         .Width(120);

...

当用户选择一些记录进行编辑(选中复选框)并按下编辑按钮时,将执行以下javascript / JQuery函数:

    function submitGridSelectedItemsForEdit() {
    $('#gridExportForm').attr('action', '/Requests/Shortage/MultiEditShortages');
    $('#gridExportForm').attr('method', 'GET');


    var chkdlist = $('input[name="selectedRequestId"]:checked');
    var newlist = chkdlist.filter(function (el) {
        return el.data("iseditable") === "True";
    });

    newlist.submit();

这将永远在线上崩溃&#34;返回el.data(&#34;可编辑&#34;)===&#34; True&#34 ;;&#34;。 我也试过使用以下内容,但是在提交newlist数组时崩溃了:

    function submitGridSelectedItemsForEdit() {
    $('#gridExportForm').attr('action', '/Requests/Shortage/MultiEditShortages');
    $('#gridExportForm').attr('method', 'GET');


    var chkdlist = $('input[name="selectedRequestId"]:checked');
    var newlist = [];

    for (var chk in chkdlist)
    {
        if (chk.data("isEditable") == true) {
            newlist.push(chk);
        }
    }

    if (newlist.length == 0) {
        alert("Please select at least 1 request to Edit.");
    }
    else {
        newlist.submit();
    }
}

获取已检查且数据属性值为&#34; True&#34;?

的对象列表的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

el回调中的

filter()是dom元素,而不是jQuery对象。另外,它不是回调的第一个参数,它是第二个。

因此,要使用jQuery方法,您需要在el

中包装$()
var newlist = chkdlist.filter(function (_,el) {
    return $(el).data("iseditable") === "True";
});

或者根据属性值过滤为选择器

var newlist = chkdlist.filter('[data-iseditable="True"]')