问题描述
取决于来自用户时,他们完成形式的反应,可以或可以不被要求的控制。所有这些控件连接了验证。例如,如果用户没有在他们的地址为至少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:
- http://asp.net-tutorials.com/validation/custom-validator/
- http://www.4guysfromrolla.com/articles/073102-1.aspx
这篇关于在asp.net控制Dyanamically禁用验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!