使用jquery在自定义验证器上遇到一些问题

时间:2013-02-11 15:55:55

标签: jquery asp.net regex customvalidator

我在使用自定义验证器来处理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;但它不会显示错误消息。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

您拥有$('.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('');
}

这将在输入后设置带有错误消息的范围,并在通过验证后再次隐藏它。这只是您完成此操作的方法之一,其他方式涉及显示和隐藏内容,但我尝试尽可能接近原始代码。