我怎样才能改写为客户端上的CustomValidator控件中的ErrorMessage?(How

2019-06-27 22:16发布

我有一个验证电话号码为几个不同的电话编号方案一的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;
...
    }
}

实际的检验发生不当,以及具有的CustomValidator在任何时候都正确的IsValid属性。 该sender.errormessage,然而,似乎被改写紧接在该函数调用它的默认值。 我怎样才能改变errormessage的价值,并使其“棒”?

Answer 1:

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

尝试sender.textContent = "your err msg" 。 它为我工作。



Answer 2:

最好的方式来改变验证控件的错误消息图像:

sender.innerHTML = "YOUR HTML WITH ANYTHING COME HERE"


Answer 3:

要更改错误信息,像这样做:

if (!args.IsValid) document.getElementById('<%= cstPhoneNumber.ClientID %>').errormessage = "* Not a NA Phone #";

要更改文本,这样做:

if (!args.IsValid) document.getElementById('<%= cstPhoneNumber.ClientID %>').innerHTML = "* Not a NA Phone #";

cstPhoneNumber应该由你的验证控件的名称来代替。



Answer 4:

它看起来你使用jQuery,所以你可以设置这样的错误信息,如:

$(sender).text("* Not a NA Phone #");

编辑:

抱歉耽搁,但我去度假。

我是打了一个回合简单的页面 ,我想我理解它是如何工作的。

当您在客户端验证功能设置的errormessage的发件人您正在设置的等同的ErrorMessage属性。 这是从不同的文本属性。 该的ErrorMessage设置在验证摘要中显示的文本,而文本属性在验证控件中显示的文本。 请注意,如果您只设置的ErrorMessage属性(在服务器上),那么的ErrorMessage将被复制到文本属性。

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

希望这将有助于它清除掉。 但是,我还没有看到一个方法来改变文本从客户端验证功能属性。 我也不清楚为什么你发送对象不是验证对象。



Answer 5:

sender.innerText = "Your message"将起作用。



Answer 6:

我认为问题是,有客户端上没有'errormessage的财产。 自定义验证呈现一个<span>标签与对应的自定义验证控制的id属性的ID,以显示该错误消息。 为了验证失败时,你需要做的财产以后这样的设置显示的文本。

... 
case "North America":
    args.IsValid = validateNAPhoneNumber(cleanNumber);
    if (!args.IsValid) 
        document.getElementById(sender.id).innerText = "* Not a NA Phone #";
    break;
...


Answer 7:

只是删除文本和的ErrorMessage的所有实例自定义验证标签的定义,然后使用

$(#id_of_custom_validation_control).text("custom error message");

然后用这一点,你可以使用一个自定义的验证控制和处理多种错误情况

if(error1){
  $(#id_of_custom_validation_control).text("custom error message1");
}else $(#id_of_custom_validation_control).text("custom error message2");

希望这可以帮助



Answer 8:

扩大@Andy响应,使用jQuery:

变化(表格显示)的短信:

$('#<%=this.[Validator].ClientID%>').text('Text to show');

改变(对于综述控制)错误消息:

$('#<%=this.[Validator].ClientID%>').attr('errormessage', 'Text to show');

替换[Validator]为你的验证器的名字。



Answer 9:

试试这个...

使用sender.textContext中的JavaScript错误信息并设置您的CustomValidator这样:

<asp:CustomValidator ID="cvdPhoneNumber" runat="server" Display="Dynamic" ForeColor="Red" ControlToValidate="txtPhoneNumber" ClientValidationFunction="validatePhoneNumber" ErrorMessage=""  />


文章来源: How can I rewrite the ErrorMessage for a CustomValidator control on the client?