0

我的应用程序允许您在商店数据库中跟踪订单。该数据库包含一个弱实体,用于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编辑器。

4

1 回答 1

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;
    }
});

您可能想要做的另一件事是为您的trandtd元素添加一些数据标签,这样您就可以编写更强大的选择器,而不会因较小的 UI 重新排列(如tr[data-role=check]andtr[data-role=location]等)而中断。


(使用最近的 JQueryJQuery。)

于 2012-12-10T20:32:20.953 回答