我在使用自定义验证器来处理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;但它不会显示错误消息。
任何想法我做错了什么?
答案 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('');
}
这将在输入后设置带有错误消息的范围,并在通过验证后再次隐藏它。这只是您完成此操作的方法之一,其他方式涉及显示和隐藏内容,但我尝试尽可能接近原始代码。