在asp.net控制Dyanamically禁用验证 [英] Dyanamically disable validation on asp.net controls

查看:136
本文介绍了在asp.net控制Dyanamically禁用验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

取决于来自用户时,他们完成形式的反应,可以或可以不被要求的控制。所有这些控件连接了验证。例如,如果用户没有在他们的地址为至少2年住,我需要验证previous地址信息;如果没有,我需要跳过验证。

我已经试过禁用与jQuery,虽然在验证文本灰色,但还是引起验证验证控件。

 <脚本SRC =../../脚本/ jQuery的-1.6.1.min.js类型=文/ JavaScript的>< / SCRIPT>
<脚本类型=文/ JavaScript的>
    $(文件)。就绪(函数(){
        $('#ddlSpouseData')。改变(
            功能(){
                VAR的选择= $('#<%= ddlAddressData.ClientID%GT;')。得到(0).selectedIndex;
                如果(选择== 1){
                    警报(选择);
                    $('#rfvAddressType')ATTR(禁用,禁用)。
                    $('#rfvBAddress')ATTR(禁用,禁用)。
                }            });
    });
< / SCRIPT>       <表ID =MyTable的阶级=tableModule>
           &所述; TR>
                < TD类=tableDataBorder>
                    数据不可用和< BR />将在后面提供。
                < / TD>
                < TD类=tableDataBorder>
                    < ASP:DropDownList的ID =ddlAddressData=服务器>
                        < ASP:列表项>请选择< / ASP:ListItem的>
                        < ASP:ListItem的>是< / ASP:ListItem的>
                        < ASP:ListItem的&GT否LT; / ASP:ListItem的>
                    < / ASP:DropDownList的>
                < / TD>
            < / TR>
            &所述; TR类=hideRow>
                < TD类=tableDataBorder>
                    识别文档
                < / TD>
                < TD类=tableDataBorder>
                    < ASP:DropDownList的ID =ddlAddressType=服务器>
                        < ASP:列表项>请选择< / ASP:ListItem的>
                        < ASP:ListItem的>家庭和LT; / ASP:ListItem的>
                        < ASP:ListItem的>办公及LT; / ASP:ListItem的>
                        < ASP:列表项>其他< / ASP:ListItem的>
                    < / ASP:DropDownList的>
                    < BR />
                    < ASP:的RequiredFieldValidator ID =rfvAddressType的CssClass =regexError的ControlToValidate =ddlAddressType
                        =服务器的ErrorMessage =请选择地址类型显示=动态
                        与InitialValue =请选择>< / ASP:&的RequiredFieldValidator GT;
                < / TD>
            < / TR>
            &所述; TR类=hideRow>
                < TD类=tableDataBorder>
                   地址
                < / TD>
                &所述; TD>
                    < ASP:文本框ID =txtAddressMAXLENGTH =50=服务器的CssClass =StdTxtBox>< / ASP:文本框>< BR />
                    < ASP:的RequiredFieldValidator ID =rfvBAddress的CssClass =regexError的ControlToValidate =txtAddress
                        =服务器的ErrorMessage =请输入您的地址显示=动态>< / ASP:&的RequiredFieldValidator GT;
                < / TD>
            < / TR>
            < /表>


解决方案

而不是您的的RequiredFieldValidator ,使用的CustomValidator 代替。

因此​​,例如,你可以改变您的rfvAddressType的RequiredFieldValidator如下:

 < ASP:的CustomValidator =服务器
     ID =valAddressType
     的ControlToValidate =ddlAddressType
     onservervalidate =cusCustom_ServerValidate
     errormessage的=请选择地址类型/>

然后在服务器code:

 保护无效cusCustom_ServerValidate(对象发件人,ServerValidateEventArgs E)
{
        如果(ddlAddressType.SelectedItem.Value ==1)
            e.IsValid = FALSE; //或做任何额外的验证检查这里!
        其他
            e.IsValid = TRUE;
}

下面的更多细节:

Depending upon the responses from the user when they complete a form, controls may or may not be required. All of these controls have validation attached to them. For instance, if the user hasn't lived at their address for at least 2 years, I need to validate previous address information; if not, I need to skip that validation.

I've tried disabling the validator control with jQuery and although when the validation text is 'greyed out', it still causes validation.

<script src="../../Scripts/jquery-1.6.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('#ddlSpouseData').change(
            function () {
                var selection = $('#<%= ddlAddressData.ClientID%>').get(0).selectedIndex;
                if (selection == 1) {
                    alert(selection);
                    $('#rfvAddressType').attr('disabled', 'disabled');
                    $('#rfvBAddress').attr('disabled', 'disabled');
                }

            });
    });
</script>

       <table id="MyTable" class="tableModule">
           <tr>
                <td class="tableDataBorder">
                    Data is not available and<br /> will be provided later.
                </td>
                <td class="tableDataBorder">
                    <asp:DropDownList ID="ddlAddressData" runat="server">
                        <asp:ListItem>Please Select</asp:ListItem>
                        <asp:ListItem>Yes</asp:ListItem>
                        <asp:ListItem>No</asp:ListItem>
                    </asp:DropDownList>
                </td>
            </tr>
            <tr class="hideRow">
                <td class="tableDataBorder">
                    Identifying Document
                </td>
                <td class="tableDataBorder">
                    <asp:DropDownList ID="ddlAddressType" runat="server">
                        <asp:ListItem>Please Select</asp:ListItem>
                        <asp:ListItem>Home</asp:ListItem>
                        <asp:ListItem>Office</asp:ListItem>
                        <asp:ListItem>Other</asp:ListItem>
                    </asp:DropDownList>
                    <br />
                    <asp:RequiredFieldValidator ID="rfvAddressType" CssClass="regexError" ControlToValidate="ddlAddressType"
                        runat="server" ErrorMessage="Please select address type" Display="Dynamic"
                        InitialValue="Please Select"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr class="hideRow">
                <td class="tableDataBorder">
                   Address
                </td>
                <td>
                    <asp:TextBox ID="txtAddress" MaxLength="50" runat="server" CssClass="StdTxtBox"></asp:TextBox><br />
                    <asp:RequiredFieldValidator ID="rfvBAddress" CssClass="regexError" ControlToValidate="txtAddress"
                        runat="server" ErrorMessage="Please enter your address" Display="Dynamic"></asp:RequiredFieldValidator>
                </td>
            </tr>
            </table>

解决方案

Instead of your RequiredFieldValidator, use a CustomValidator instead.

So for example you can change your 'rfvAddressType' requiredfieldvalidator as follows:

<asp:CustomValidator runat="server" 
     id="valAddressType" 
     controltovalidate="ddlAddressType" 
     onservervalidate="cusCustom_ServerValidate" 
     errormessage="Please select address type" />

Then on the server code:

protected void cusCustom_ServerValidate(object sender, ServerValidateEventArgs e)
{
        if (ddlAddressType.SelectedItem.Value == "1")             
            e.IsValid = false; // or do any additional validation checks here!    
        else            
            e.IsValid = true;   
}

More details here:

这篇关于在asp.net控制Dyanamically禁用验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆