【问题标题】:Validation event for asp net client side validationasp net 客户端验证的验证事件
【发布时间】:2011-11-15 00:28:58
【问题描述】:

我想知道是否有一种方法可以将自定义函数连接到 asp 网络客户端验证事件,所以每次验证被任何控件触发时,我都可以在客户端 UI 上创造一些魔法

我正在寻找一种通用方法来拦截页面验证事件,而不是在导致回发的每个控件上设置它

谢谢大家

编辑:

我最终得到了这个功能:(感谢@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);
            }
        }
    });    
}); 

【问题讨论】:

  • 你试过Ajax更新面板吗?

标签: javascript asp.net validation


【解决方案1】:

要执行此操作,您可以在提交按钮上放置一个 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

【讨论】:

  • 这是我可以使用的一种方法,但我需要在每个导致回发的控件上设置 t,我忘了请求一个通用方法,请查看我的问题编辑,谢谢跨度>
  • 我已经更新了答案。如果您需要任何关于如何执行此操作的其他说明,请告诉我。
  • 谢谢你,我认为表单提交事件是我需要的,我会试一试告诉你
  • 乐于助人。如果您可以将此标记为答案,我将不胜感激。我是新来的,需要我能获得的所有声誉才能尝试在这个地方发帖和投票。
【解决方案2】:
//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 底部的最后一个代码示例。

【讨论】:

  • 不要在网站上发布链接,请尝试至少包含您链接到的信息摘要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 2011-11-08
相关资源
最近更新 更多