我有一张表,用户可以在其中选择样本。在每一行中都有隐藏字段,其中包含唯一的ID。我想在数组中选择(选中)行隐藏字段的值,因此可以将其传递进行处理。
到目前为止我得到的是:
var data = Array();
$("#nonScheduledSamples tr").each(function (i) {
if ($(this).prop("checked")) {
data[i] = $(this).find("#item_SampleId").val();
}
});
该表由MVC局部视图生成:
@foreach (var item in Model.SampleInfo)
{
<tr>
@Html.HiddenFor(i=>item.SampleId)
<td class="text-center">@Html.CheckBoxFor(i=>i.Selected)</td>
</tr>
}
这会向我返回一个空数组。任何帮助真的很感激。
更新#1:
我修改了代码,所以html看起来像这样:
<input data-sampleid="60815" data-val="true" data-val-required="The Selected field is required." id="SampleIdSelect" name="SampleInfo[0].Selected" type="checkbox" value="true">
和jquery:
$("#nonScheduledSamples tr input").each(function () {
if ($(this).prop("checked")) {
data.push($("#SampleIdSelect").data("sampleid"));
}
});
目前,数据数组中填充了来自data-sampleid的相同值,但勾选了相同数量的复选框。我做错了什么?
谢谢你的进步。
答案 0 :(得分:0)
你应该试试这个。
@foreach (var item in Model.SampleInfo)
{
<tr>
@Html.HiddenFor(i=>item.SampleId ,new { @class="item_SampleId"})
<td class="text-center">@Html.CheckBoxFor(i=>i.Selected)</td>
</tr>
}
答案 1 :(得分:0)
最后的结论:
HTML:
<input data-sampleid="60815" data-val="true" data-val-required="The Selected field is required." id="SampleIdSelect0" name="SampleInfo[0].Selected" type="checkbox" value="true">
Jquery的:
$("#nonScheduledSamples tr input").each(function () {
if ($(this).prop("checked")) {
var x = this.id.slice(14);
data.push($("#SampleIdSelect" + x).data("sampleid"));
}
});
因此,对id文本部分进行切片,并获得相同的id数据值,该值可以推送到数组中。这是一场战斗......
如果你有请分享,可能还有更好的解决方案。