5

我想运行任何连接到特定文本输入元素的客户端验证例程。

已使用以下方式设置验证CustomValidator

<asp:textbox id="AddEstTime" runat="server" Width="55px"></asp:textbox><br />
<asp:CustomValidator ID="AddEstTimeCustomValidator" ClientValidationFunction="AddEstTimeCustomValidator_ClientValidate" OnServerValidate="AddEstTimeCustomValidator_ServerValidate" ErrorMessage="Please enter a time" ControlToValidate="AddEstTime"  runat="server" Display="Dynamic" ValidateEmptyText="true"/>
<asp:CheckBox ID="AddIsTM" runat="server" Text="T&amp;M" />

和javascript:

function AddEstTimeCustomValidator_ClientValidate(sender, args) {
    var checkbox = $("input[id$='IsTM']");
    args.IsValid = checkbox.is(":checked") || args.Value.match(/^\d+$/);
}

CheckBox“AddIsTM”状态改变时,我想重新验证textbox“AddEstTime”,使用它连接的CustomValidator“AddEstTimeCustomValidator”。

我知道焦点-> 添加字符重新聚焦-> 删除字符。我正在努力寻找更正确的方法。asp.NET 新手。

4

3 回答 3

4

在查看了 Microsoft 客户端代码之后,我想出了这个似乎可行的方法:

// client-side validation of one user-control.
// pass in jquery object with the validation control
function ValidateOneElement(passedValidator) {
    if (typeof (Page_Validators) == "undefined") {
        return;
    }
    $.each(Page_Validators, function (index, value) {
        if ($(value).attr("id") == passedValidator.attr("id")) {
            ValidatorValidate(value, null, null);
        }
    });
}

这是在检查Page_ClientValidate函数之后:

function Page_ClientValidate(validationGroup) {
    Page_InvalidControlToBeFocused = null;
    if (typeof(Page_Validators) == "undefined") {
        return true;
    }
    var i;
    for (i = 0; i < Page_Validators.length; i++) {
        ValidatorValidate(Page_Validators[i], validationGroup, null);
    }
    ValidatorUpdateIsValid();
    ValidationSummaryOnSubmit(validationGroup);
    Page_BlockSubmit = !Page_IsValid;
    return Page_IsValid;
}
于 2012-05-18T02:04:57.033 回答
3

thx sennett(已投票)

我刚刚运行了最简单的 JS

Page_ClientValidate();

如果您有一个验证组,那么是

Page_ClientValidate("validationGroupName")
于 2013-12-24T18:35:59.403 回答
1

如果你最终想坚持使用 ASP.NET 验证器,你可以滥用 Validation Groups,但我认为这种方法只会给你带来麻烦。其他选项是在客户端上使用 jQuery(不错的列表),然后您必须在服务器端重复验证,或者避免从客户端验证调用服务器方法。

于 2012-05-16T22:41:01.253 回答