2013-02-11 86 views
0

我有一个问题得到一个自定义验证工作与jQuery。使用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; 
    } 
} 

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

任何想法我做错了什么?

回答

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(''); 
} 

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

+0

感谢您的快速响应。我在ASP中使用CustomValidator并尝试通过上面的jquery设置errormessage。自定义验证器有一个“valPoBox”类。 – reds184 2013-02-11 16:24:36

+0

自定义验证器只是被解雇的服务器端,所以您将无法使用jQuery或任何JavaScript在客户端上设置ErrorMessage属性。最好的办法是将它放在一个带有AutoPostback =“true”属性的''中,并将JavaScript代码转换为.NET用于输入框的OnChange事件。此外这个问题应该有ASP.NET标签,因为这比ASP.NET更关注ASP.NET而不是jQuery。 :) – Deif 2013-02-11 16:28:22