zoukankan      html  css  js  c++  java
  • 手动触发asp.net页面验证控件事件

    1 Page_ClientValidate(validationGroup) 
    返回值是布尔值(true:验证通过, false:验证失败)。

    2 ValidatorValidate(val, validationGroup, event) 
    无返回值,无法判断验证是否通过。调用Validator的验证并更新其表示形式以及验证失败时聚焦控件等

       其实在Page_ClientValidate里会调用ValidatorValidate来调用Validator的验证和并根据display属性的值(None, Static, Dynamic)来调整Validator的表示形式。

    一, Page_ClientValidate方法

            参数为ValidationGroup属性的值。没有指定参数的情况下表示触发页面所有的Validator控件。

    <script type="text/javascript">
    function preview() {
          // 输入验证
    if (!Page_ClientValidate("Detail")) {
    return;
    }

    // 验证成功后的处理
          ......
    }
    </script>

       如果没有使用ValidationSummary控件,而且不关心验证成功与否的后续处理。那可以使用ValidatorValidate方法

    ***

    问题:

    一.同时验证全部验证组:

    a)客户端解决

    1.

    val res1=Page_ClientValidate("Detail") ;

    val res2=Page_ClientValidate("BBB");

    2.

    if (!Page_ClientValidate("Detail") || !Page_ClientValidate("BBB")) { 
    return; 
    }

    以上两种写法,只有当Detail验证通过的时候,才会进行验证BBB,没有办法页面上同时进行验证两个及以上.

    可以用Page_ClientValidate()来验证多个验证组的.

    if (!Page_ClientValidate()) { 
          return; 
    }

    Page_ClientValidate说明:

    Page_ClientValidate():验证所有的控件(有设置验证组和没有验证组的都进行验证).

    Page_ClientValidate(""):验证没有设置验证组的控件.

    Page_ClientValidate("PP"):验证验证组为PP的控件.

    b)服务器端解决

    Page.Validate();//验证所有的控件

    if (!Page.IsValid) 

                     return; 
    }

    Page.Validate说明:

    Page.Validate():验证所有的控件(有设置验证组和没有验证组的都进行验证).

    Page.Validate(""):验证没有设置验证组的控件.

    Page.Validate("PP"):验证验证组为PP的控件.

    二.验证自定义的验证组.

    (参考 http://blog.163.com/xiao_mege/blog/static/729427532010112845924555/ )

    添加两个JS function:

    function ValidatePage(validationGroups)

    {

    var list = validationGroups.split('&');

    for (var i = 0; i < Page_Validators.length; i++)

        {

                 var validator = Page_Validators[i];

    if ((validator.validationGroup && ExistsGroup(list, validator.validationGroup))

                || (!validator.validationGroup && ExistsGroup(list, '')))

            {

                ValidatorValidate(validator, validator.validationGroup);

                Page_IsValid = Page_IsValid && validator.isvalid;

            }

    else

            {

                validator.isvalid = true;

                ValidatorUpdateDisplay(validator);

            }

        }

    //ValidationSummary

    for (var i = 0; i < list.length; i++)

        {

            ValidationSummaryOnSubmit(list[i]);

        }

        Page_BlockSubmit = !Page_IsValid;

        return Page_IsValid;

    }

    function ExistsGroup(list, group)

    {

    var found = false;

    for (i = 0; i < list.length; i++)

        {

    if (list[i] == group)

            {

                found = true;

                break;

            }

        }

         return found;

    }

    调用:

    <asp:Button ID="ibtnSave" runat="server" OnClientClick="return AAA()" />

    function AAA()

    {

          if(ValidatePage("&Group1&Group2"))// 验证 没有设置的验证组,Group1,Group2(没有设置验证组的设置为空就可以了)

          {

                   return true;

          }

          return false;

    }

    ***

    二, ValidatorValidate方法

            参数: var                    要触发的Validator控件对象

    validationGroup  ValidationGroup属性的值

    event                验证对象ID(用于聚焦。需要focusOnError=“true”的情况下才有用)

    例子程序可以参考这里

     

    http://www.haogongju.net/art/1311071

  • 相关阅读:
    Map集合的四种遍历
    java 请求 google translate
    Linux 内核初级管理
    Linux GRUB
    Linux 系统启动流程
    Linux 任务计划 crontab
    Linux 进程管理工具
    Linux sudo实作
    Linux 进程管理
    Linux 网络配置命令:ip、ss
  • 原文地址:https://www.cnblogs.com/slyzly/p/2473983.html
Copyright © 2011-2022 走看看