我的应用程序允许您跟踪商店数据库中的订单。此数据库包含用于notes
的弱实体,该实体附加到orderID
。我希望允许用户同时向多个订单应用相同的“注释”,但notes
表中的某些字段取决于销售的location
。换句话说,如果所有销售地点都相同,则只允许您应用相同的备注。
简化视图:
@using (Html.BeginForm("Create", "Note", FormMethod.Get, new { name = "editForm" }))
{
<table id="DataTable">
<tr>
<th>
<input type="button" value="Edit" onclick="checkboxValidation()"/>
</th>
<th>
@Html.DisplayNameFor(model => model.OrderID)
</th>
<th>
@Html.DisplayNameFor(model => model.location)
</th>
</tr>
@foreach (var item in Model)
{
<tr >
<td>
<input type="checkbox" name="ids" value="@item.orderID" />
</td>
<td>
@Html.ActionLink(item.OrderID.ToString(), "Details", "Search", new { orderID = item.orderID.ToString() }, null)
</td>
<td>
@Html.DisplayFor(modelItem => item.location)
</td>
</tr>
}
</table>
checkboxValidation()
是我写的一个javascript函数,用于检查是否至少选中了1个复选框。如何添加支票以确保选中行上的所有位置都相同?这甚至可能吗?感谢
notes
编辑器。
答案 0 :(得分:1)
使用JQuery应该相当简单:
// find all the checked rows
var checkedItems = $("#DataTable").find("tr td input[type=checkbox]");
// construct a locations array for all checked items
var locations = [];
checkedItems.each(function(index, element) {
if ($(element).is(":checked")) {
locations.push($(this).closest("td").next("td").next("td").text().trim());
}
});
// confirm each location is the same
var valid = true;
locations.each(function(index, element) {
if (index > 0 && locations[index-1] != element) {
valid = false;
return;
}
});
您可能想要做的另一件事是向您的tr
和td
元素添加一些数据标记,这样您就可以编写更强大的选择器,这些选择器不会因轻微的用户界面而中断 - 安排(如tr[data-role=check]
和tr[data-role=location]
等)。