如何在客户端上为CustomValidator控件重写ErrorMessage?

Dus*_*man 6 javascript asp.net validation client-side ecma262

我有一个CustomValidator,用于验证几种不同电话号码方案的电话号码.客户端javascript看起来像这样:

validatePhoneNumber(sender, args) {
    cleanNumber = args.Value.replace(/\D/, "");
    country = $("#" + CountryID).get(0).value;
    switch (country) {
        case "North America":
            args.IsValid = validateNAPhoneNumber(cleanNumber);
            if (!args.IsValid) sender.errormessage = "* Not a NA Phone #";
            break;
        case "UK":
            args.IsValid = validateUKPhoneNumber(cleanumber);
            if (!args.IsValid) sender.errormessage = "* Not a UK Phone #";
            break;
...
    }
}
Run Code Online (Sandbox Code Playgroud)

实际验证正确进行,CustomValidator始终具有正确的IsValid属性.然而,sender.errormessage似乎在此函数调用它的默认值之后被重写.如何更改errormessage值,并使其"坚持"?

小智 5

function dateofbirth(sender, args) {

    var dtcDOB = document.getElementById('<%= dtcDOB.ClientID %>');

    var dob = new Date(dtcDOB.value);
    var currDate = new Date();

    if (dtcDOB.value == "") {
        args.IsValid = false;
        sender.textContent = "Provide DOB.";
        return;
    }

    args.IsValid = true;
}
Run Code Online (Sandbox Code Playgroud)

尝试sender.textContent = "your err msg"。这对我有用。


drs*_*222 2

它看起来像你使用 jquery 所以你可以像这样设置错误消息:

$(sender).text("* Not a NA Phone #");
Run Code Online (Sandbox Code Playgroud)

编辑:

抱歉耽搁了,但我去度假了。

我正在用一个简单的页面玩一轮,我想我明白这是如何工作的。

当您在客户端验证函数中设置发送方的错误消息时,您正在设置与ErrorMessage属性等效的内容。这与Text属性不同。ErrorMessage设置验证摘要显示的文本,而Text属性是验证器控件中显示的文本。请注意,如果您仅设置ErrorMessage属性(在服务器上),则ErrorMessage将被复制到Text属性中。

这意味着当您设置sender.errormessage实际设置时,验证摘要中显示的文本。

希望这将有助于解决这个问题。但是,我仍然没有找到从客户端验证功能更改Text属性的方法。我也不确定为什么您的发送者对象不是验证器对象。