获取还具有特定数据属性值的已选中复选框的列表
Get a list of checked checkboxes that also has a specific data-attribute value
我有一个 table 数据,其中包含一个复选框,用户可以 select 导出记录或编辑记录。对于编辑,复选框有一个数据属性,显示特定数据集是否为 editable(基于用户权限)。
我正在尝试获取复选框值的列表,其中复选框被选中且数据属性具有值 "True"。
在我的视图模型中,我有以下字段:
public bool ShortageIsEditable {get;set;}
这在视图模型映射器中设置为 true 或 false,具体取决于记录的状态和用户的权限。
在我看来,我有一个 table,每个记录都有以下复选框和数据属性:
@(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);
...
当用户 select 编辑一些记录(选中复选框)并按下“编辑”按钮时,将执行以下 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();
这将始终在 "return el.data("iseditable") === "True";" 行崩溃。
我也尝试过使用以下方法,但是在提交新列表数组时会崩溃:
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();
}
}
获取已检查且数据属性值为 "True" 的对象列表的最简单方法是什么?
filter()
回调中的 el
是 dom 元素,而不是 jQuery 对象。 LAso 它不是回调的第一个参数,它是第二个。
所以要使用 jQuery 方法,您需要将 el
包装在 $()
中
var newlist = chkdlist.filter(function (_,el) {
return $(el).data("iseditable") === "True";
});
或者根据属性值作为选择器进行筛选
var newlist = chkdlist.filter('[data-iseditable="True"]')
我有一个 table 数据,其中包含一个复选框,用户可以 select 导出记录或编辑记录。对于编辑,复选框有一个数据属性,显示特定数据集是否为 editable(基于用户权限)。
我正在尝试获取复选框值的列表,其中复选框被选中且数据属性具有值 "True"。
在我的视图模型中,我有以下字段:
public bool ShortageIsEditable {get;set;}
这在视图模型映射器中设置为 true 或 false,具体取决于记录的状态和用户的权限。
在我看来,我有一个 table,每个记录都有以下复选框和数据属性:
@(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);
...
当用户 select 编辑一些记录(选中复选框)并按下“编辑”按钮时,将执行以下 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();
这将始终在 "return el.data("iseditable") === "True";" 行崩溃。 我也尝试过使用以下方法,但是在提交新列表数组时会崩溃:
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();
}
}
获取已检查且数据属性值为 "True" 的对象列表的最简单方法是什么?
filter()
回调中的 el
是 dom 元素,而不是 jQuery 对象。 LAso 它不是回调的第一个参数,它是第二个。
所以要使用 jQuery 方法,您需要将 el
包装在 $()
var newlist = chkdlist.filter(function (_,el) {
return $(el).data("iseditable") === "True";
});
或者根据属性值作为选择器进行筛选
var newlist = chkdlist.filter('[data-iseditable="True"]')