我有一个包含一个下拉列表和一个文本框的用户控件。我在我的 web 应用程序中使用的这个用户控件在 aspx 页面内。所以我有一个问题,如果我在用户控件内的文本框中放置一些文本,那么下拉列表的 requiredfieldvalidator 应该在运行时启用,否则它应该被禁用。
任何帮助都将不胜感激......
我有一个包含一个下拉列表和一个文本框的用户控件。我在我的 web 应用程序中使用的这个用户控件在 aspx 页面内。所以我有一个问题,如果我在用户控件内的文本框中放置一些文本,那么下拉列表的 requiredfieldvalidator 应该在运行时启用,否则它应该被禁用。
任何帮助都将不胜感激......
由于您希望RequiredFieldValidator
仅当用户在其中输入文本时才处于活动状态,所以TextBox
我建议使用 aCustomValidator
代替。
void ServerValidation (object source, ServerValidateEventArgs args)
{
args.IsValid = TextBox1.Text.Length == 0 || DropDownList1.SelectedIndex != -1;
}
CustomValidator
可以在不设置ControlToValidate
属性的情况下使用控件。
一个可能的客户端验证功能:
<script language="javascript">
<!--
function ClientValidate(source, arguments)
{
var txt = document.getElementById('<%= TextBox1.ClientID %>');
var ddl = document.getElementById('<%= DropDownList1.ClientID %>');
if (txt.length == 0)
arguments.IsValid = true;
else
arguments.IsValid = ddl.selectedIndex >= 0;
}
// -->
</script>
您必须通过ClientValidationFunction
属性在验证器上注册它:
<asp:CustomValidator Id="CustomValidator1" runat="server"
ClientValidationFunction="ClientValidate"
OnServerValidate="ServerValidation">
</asp:CustomValidator>
将 CausesValidation 属性设置为 false,则下拉列表不会触发验证。