有时我们需要让页面上的一部分验证控件不起作用。又不想回发到后台去改变验证控件的Enable属性。
这时就需要利用Js设置验证控件的Enable属性。直接设置Enable属性是不好使的。
所以要通过一个函数来实现此功能。函数名称为:ValidatorEnable(val,enable).
这个函数可以将验证控件的属性设置成功,也可以通过前台的验证。就是后台的Page.IsValid仍然是False.
所以我用了一个HiddenField存储前台验证通过标识。后台做一个或的判断就可以通过验证,并执行后台代码。
如:if(Page.IsValid || this.hdf_flag.Value.Equals("true"))
注:ValidatorEnable 详细说明:http://msdn.microsoft.com/en-us/library/aa479045.aspx
实例如下:
前台代码:
<
script type
=
"
text/javascript
"
>
function validChange() {
// Do nothing if client validation is not active
if ( typeof (Page_Validators) == " undefined " ) return ;
ValidatorEnable(document.getElementById( ' <%=Validatorfriendname2.ClientID %> ' ), false );
ValidatorEnable(document.getElementById( ' <%=ValidatorPosition2.ClientID %> ' ), false );
}
function validPages() {
var flag = document.getElementById( ' <%=hdf_flag.ClientID %> ' )
validChange();
Page_ClientValidate();
if (Page_IsValid) { // 用于判断前台页面验证控件是否全部通过验证,通过为True
flag.value = " true " ;
} else {
flag.value = " false " ;
}
}
</ script >
< div >
< asp:HiddenField ID = " hdf_flag " runat = " server " />
姓名: < input id = " txt_name " runat = " server " type = " text " maxlength = " 20 " />
< asp:RequiredFieldValidator ID = " Validatorfriendname2 " runat = " server " ControlToValidate = " txt_name "
Display = " Dynamic " EnableClientScript = " true " ErrorMessage = " * " ></ asp:RequiredFieldValidator >
职业: < input type = " text " id = " txt_Position " runat = " server " maxlength = " 20 " />
< asp:RequiredFieldValidator ID = " ValidatorPosition2 " EnableClientScript = " true " runat = " server "
ControlToValidate = " txt_Position " Display = " Dynamic " ErrorMessage = " * " ></ asp:RequiredFieldValidator >
< asp:ImageButton ID = " ibn_storeRecord " runat = " server " ImageUrl = " Img/icon_baocun.gif "
hspace = " 5 " OnClick = " ibn_storeRecord_Click " OnClientClick = " validPages(); "
Height = " 21px " />
</ div >
function validChange() {
// Do nothing if client validation is not active
if ( typeof (Page_Validators) == " undefined " ) return ;
ValidatorEnable(document.getElementById( ' <%=Validatorfriendname2.ClientID %> ' ), false );
ValidatorEnable(document.getElementById( ' <%=ValidatorPosition2.ClientID %> ' ), false );
}
function validPages() {
var flag = document.getElementById( ' <%=hdf_flag.ClientID %> ' )
validChange();
Page_ClientValidate();
if (Page_IsValid) { // 用于判断前台页面验证控件是否全部通过验证,通过为True
flag.value = " true " ;
} else {
flag.value = " false " ;
}
}
</ script >
< div >
< asp:HiddenField ID = " hdf_flag " runat = " server " />
姓名: < input id = " txt_name " runat = " server " type = " text " maxlength = " 20 " />
< asp:RequiredFieldValidator ID = " Validatorfriendname2 " runat = " server " ControlToValidate = " txt_name "
Display = " Dynamic " EnableClientScript = " true " ErrorMessage = " * " ></ asp:RequiredFieldValidator >
职业: < input type = " text " id = " txt_Position " runat = " server " maxlength = " 20 " />
< asp:RequiredFieldValidator ID = " ValidatorPosition2 " EnableClientScript = " true " runat = " server "
ControlToValidate = " txt_Position " Display = " Dynamic " ErrorMessage = " * " ></ asp:RequiredFieldValidator >
< asp:ImageButton ID = " ibn_storeRecord " runat = " server " ImageUrl = " Img/icon_baocun.gif "
hspace = " 5 " OnClick = " ibn_storeRecord_Click " OnClientClick = " validPages(); "
Height = " 21px " />
</ div >
后台代码:
protected
void
ibn_storeRecord_Click(
object
sender, ImageClickEventArgs e)
{
if (Page.IsValid || this .hdf_flag.Value.Equals( " true " ))
{
// TODO:
}
}
{
if (Page.IsValid || this .hdf_flag.Value.Equals( " true " ))
{
// TODO:
}
}