Asp.net验证控件具有ValidationGroup属性,对验证控件进行分组验证。Button也具有ValidationGroup属性,表明其要触发哪个分组的验证控件,问题是此属性只能设置一个分组,如果要触发多个分组的验证控件,该如何作呢?其实我们可以通过自己写JS脚本来包装验证控件的方法,从而实现解发多个分组的功能。

客户端JS代码
<script type="text/javascript">
    //让Button能验证多个分组
    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;
    }

    //指定的分组是否在要验证的分组列表中
    //true表示在其中,false表示不在其中
    function ExistsGroup(list, group) {
        var found = false;

        for (i = 0; i < list.length; i++) {
            if (list[i] == group) {
                found = true;
                break;
            }
        }

        return found;
    }

</script>

 

在Button的OnClientClick事件中调用ValidatePage函数
<asp:Button runat="server" ID="btnTest" Text="Test" OnClientClick="return ValidatePage('vgJieCi&vgPC');" OnClick="btnTest_Click" />
 
 
 
 
 
这样,我们就能让Button解发多个分组的验证了。
posted on 2010-04-22 19:03  znyin  阅读(608)  评论(0编辑  收藏  举报