【问题标题】:Having some trouble with a custom validator using jquery使用 jquery 的自定义验证器遇到一些问题
【发布时间】:2013-06-22 22:49:47
【问题描述】:

我在让自定义验证器与 jQuery 一起工作时遇到问题。

这是我创建的用于检查文本框是否包含 PO BOX 的函数。

function valPoBox(sender, args) {
    var hasPObox = "^P\.?\s?O\.?\sB[Oo][Xx].";
    var StreetAddress = $('.streetaddress').val();
    var match = StreetAddress.match(RegExp(hasPObox));
    if (!match) {
        args.IsValid = false;
        sender.ErrorMessage = "Address must not contain P.O. Box";
        $('.valPoBox').attr("ErrorMessage", sender.ErrorMessage);
    }
    else {
        args.IsValid = true;
    }
}

当我跳出文本框时会触发该函数,并将按照逻辑进入 args.IsValid = false;但它不会显示错误消息。

任何想法我做错了什么?

【问题讨论】:

    标签: jquery asp.net regex customvalidator


    【解决方案1】:

    $('.valPoBox').attr("ErrorMessage", sender.ErrorMessage); 的最后一行实际上不是有效代码。 attr 函数在元素上设置 HTML 属性。我猜你想要做的是在输入之后添加一段文本,并在验证失败后向用户显示。

    例如,你可以有这样的东西:

    <input class="streetaddress" /><span id="PoBoxError"></span>
    

    你的 JS 然后变成这样的东西:

        ...
        $('#PoBoxError').html(sender.ErrorMessage);
    } else {
        args.IsValid = true;
        $('#PoBoxError').html('');
    }
    

    这会在输入错误消息之后设置跨度,并在通过验证后再次隐藏它。这只是您可以实现此目的的方法之一,其他方法涉及显示和隐藏内容,但我试图使答案尽可能接近您的原始代码。

    【讨论】:

    • 感谢您的快速响应。我在 ASP 中使用 CustomValidator 并尝试通过上面的 jquery 设置错误消息。自定义验证器有一个“valPoBox”类。
    • 自定义验证器仅在服务器端触发,因此您将无法使用 jQuery 或任何 JavaScript 在客户端上设置 ErrorMessage 属性。最好将它放在带有AutoPostback="true" 属性的&lt;asp:UpdatePanel&gt; 中,并将您的JavaScript 代码转换为.NET 以用于输入框的OnChange 事件。这个问题也应该有 ASP.NET 标签,因为这比 jQuery 更关注 ASP.NET。 :)
    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    相关资源
    最近更新 更多