asp net客户端验证的验证事件

时间:2011-09-12 02:50:29

标签: javascript asp.net validation

我想知道是否有办法将自定义函数连接到asp net客户端验证事件,因此每次验证都被任何控件触发时我都可以在客户端UI上发挥一些魔力

我正在寻找拦截页面onvalidating事件的一般方法,而不是在导致回发的每个控件上设置它

谢谢你们

修改

我最终得到了这个功能:(感谢@Kirk)

$(document).ready(function () {
    $('form').submit(function () {
        if (typeof Page_Validators != 'undefined') {
            var errors = '';
            $.each(Page_Validators, function () {
                if (!this.isvalid) {
                    errors += this.errormessage + '\r\n';
                }
            });
            if (errors.length > 0) {
                Alert(errors);
            }
        }
    });    
}); 

2 个答案:

答案 0 :(得分:2)

要做一些事情,你可以在提交按钮或只是一般表单提交事件上放置一个OnClientClick事件。

然后,您可以将Client Validation Object Model与验证器控件一起使用。这实际上允许您验证您设置的每个验证控件。您可以从客户端查看与页面相关的一些值,请参阅http://msdn.microsoft.com/en-us/library/yb52a4x0.aspx#ClientSideValidation_ClientValidationObjectModel

您使用isvalid属性引用每个控件。例如

<asp:Label id="lblZip" runat="server" Text="Zip Code:" />
<asp:TextBox id="txtZip" runat="server" /></asp:TextBox>
<asp:RegularExpressionValidator id="valZip" runat="server"
   ControlToValidate="txtZip"
   ErrorMessage="Invalid Zip Code" 
   ValidationExpression="[0-9]{5}" />

<script language=javascript>
// Call this function to do something
function txtZipOnChange() {
   // Do nothing if client validation is not active
   if (typeof(Page_Validators) == "undefined")  return;
       // Change the color of the label
       lblZip.style.color = valZip.isvalid ? "Black" : "Red";
}
</script>

您还可以在页面上使用客户端函数Page_Validators获取验证器数组。您可以使用更多功能。

此外,您可以使用ValidatorValidate(val)客户端功能强制检查每个客户端以及ValidatorEnable(val, enable)以启用或禁用验证器作为您的逻辑要求。

详细了解http://msdn.microsoft.com/en-us/library/aa479045.aspx#aspplusvalid_clientside

希望这能让你到达目的地。如果没有,请随时询问。

以前的评论 您可以使用onClientClick并附加JavaScript函数。 http://msdn.microsoft.com/en-us/library/7ytf5t7k.aspx

如果您想使用jQuery,可以使用ClientIDMode更容易找出控件ID。

看看http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx

答案 1 :(得分:1)

//Page_Validators is an array of validation controls in the page. 
if (Page_Validators != undefined && Page_Validators != null) 
{ 
    //Looping through the whole validation collection. 
    for(var i=0; i<Page_Validators.length; i++) 
    { 
        ValidatorEnable(Page_Validators[i]); 
        //if condition to check whether the validation was successfull or not. 
        if (!Page_Validators[i].isvalid) 
        { 
            break; 
        } 
    } 
}

//if condition to check whether the page was validated successfully. 
if(Page_IsValid) 
{ 
    alert('Success'); 
} 
else 
{ 
    alert('Failure'); 
}

请注意this page底部的最后一个代码示例。