5

所以我已经编写了一个自定义的 jQuery 验证器方法。它与 1 个或多个单独的下拉列表相关联。(我在asp.net,顺便说一句)

jQuery.validator.addMethod("dropdownBoxHasItemSelected", function (value, select, arg) {
    var returnValue = false;
    var selectedIndex = $(select).prop("selectedIndex");
    if (selectedIndex != 0) {
        returnValue = true;
    }
    return returnValue;
}, "Please select a item.");

所以这真的不是我的问题。

我有一些必须在“页面级别”进行的验证。或者也许在“GridView”级别是一种更好的表达方式。

这是场景:(我使用虚构的数据使解释更容易,也就是说,我真的没有玩具和食物)

我有一个网格视图。

Column A of the gridview is of no consequence of this, but it exists.
Column B of the gridview has a DropDownList for "FavoriteToy". 
Column C of the gridview has a DropDownList for "FavoriteFood".

所以规则是这样的。

对于gridview中的每一行:

You must pick a FavoriteToy or a FavoriteFood for each row.
You can pick a FavoriteToy OR a FavoriteFood, but not both on the same row.
If you pick a FavoriteToy of "TeddyBear" in RowX, none of the other rows can have TeddyBear chosen. (Aka, each row must have a distinct FavoriteToy chosen)
If you pick a FavoriteFood of "AppleButter" in RowX, none of the other rows can have AppleButter chosen. (Aka, each row must have a distinct FavoriteFood chosen)

如果需要,可以将新行添加到 gridview。还有一个“删除”按钮,以防万一用户用尽了所有的 FavoriteToy 和 FavoriteFood 组合。

现在,我已经编写了所有验证逻辑(使用 jQuery 语法检查值并循环遍历所有内容)。

我正在寻找有关如何使用 jQuery.validator.addMethod 连接“网格视图整体验证器”的建议。

我想我可以将它连接到一个 asp:Label (客户端上 type="text" 的“输入”),因此错误消息会在那里弹出。

或者,网格视图在客户端呈现为“表格”。

有什么一般性的建议吗?

==================================================== ===================

到目前为止我所做的:

asp:net 控制:

<asp:HiddenField ID="hidGridViewValidatorPlaceHolder" runat="server" />

和下面的方法

jQuery.validator.addMethod("gridViewValiatorMethod", function (value, select, arg) {
    var returnValue = true;
    var errorMsg = SuperValidationWrapper();
    if (errorMsg != "") {
        alert(errorMsg);
        returnValue = false;
    }
    return returnValue;
}, "Please address the issues in the gridview.");

SuperValidationWrapper() 具有所有循环。我返回一个有任何问题的串联字符串。我不喜欢那样,但这就是我所做的。

警报框为您提供详细信息,以及“请解决网格视图中的问题”文本。如果有任何问题出现。

任何改进表示赞赏。

4

1 回答 1

1

Validator 确实是为验证字段而设计的,但是由于您不想验证字段,因此无法将表达式绑定到字段。

您确实需要将“页面验证”逻辑放在提交处理程序中

http://docs.jquery.com/Plugins/Validation/validate#options

于 2013-04-06T23:57:42.247 回答