根据DropDownList选择验证TextBox

时间:2012-02-10 21:13:49

标签: asp.net validation

我需要根据TextBox控件中选择的值验证DropDownList。我有asp:TextBoxasp:DropDownList个控件。

如果用户从第一个下拉列表中选择Yes选项,则必须在文本框中键入值。如何验证第二个框?谢谢你的帮助。

3 个答案:

答案 0 :(得分:4)

最简单的方法是将DropDownList的AutoPostBack属性设置为true并处理它的SelectedIndexChanged事件。然后你可以在那里启用/禁用验证器。

另一种方法是使用CustomValidator。此验证器不依赖于单个控件。您必须自己编写验证规则。例如ClientValidationFunction

<script type="text/javascript" >
    function ClientValidate(source, arguments) {
        var txt = document.getElementById('TextBox1');
        var ddl = document.getElementById('DropDownList1');
        var decision = ddl.options[ddl.selectedIndex].text;
        if(decision=='Yes'){
            arguments.IsValid = txt.value.length > 0;
        }else{
            arguments.IsValid = true;
        }
    }
</script>

<asp:DropDownList id="DropDownList1" runat="server">
    <asp:ListItem Selected="True">Yes</asp:ListItem>
    <asp:ListItem Selected="False">No</asp:ListItem>
</asp:DropDownList>
<asp:TextBox id="TextBox1" runat="server" />
<asp:Button ID="BtnSubmit" runat="server" Text="Submit" />

<asp:CustomValidator id="CustomValidator1"
       ValidateEmptyText="true"
       ControlToValidate="TextBox1"
       ClientValidationFunction="ClientValidate"
       OnServerValidate="ServerValidation"
       Display="Static"
       ErrorMessage="Please enter text!"
       runat="server"/>

请记住始终实施OnServerValidate因为您不应该只依赖javascript(可以禁用)。这很简单:

void ServerValidation(object source, ServerValidateEventArgs args){
    args.IsValid = DropDownList1.SelectedIndex == 1 || TextBox1.Text.Length > 0;
}

VB.NET

Protected Sub ServerValidation(source As Object, args As System.Web.UI.WebControls.ServerValidateEventArgs)
    args.IsValid = DropDownList1.SelectedIndex = 1 OrElse TextBox1.Text.Length > 0
End Sub

答案 1 :(得分:0)

将此代码添加到您的提交按钮。

if(DropDownList1.SelectedItem.Text.Equals("Yes") && TextBox1.Text.Length==0)
{
        Page.ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('Enter data in the textbox !');", true);
}

答案 2 :(得分:0)

添加一个CustomValidator控件,验证TextBox,从那里你必须在CustomValidator_ServerValidate事件处理程序中做这样的事情(假设是C#):

bool valid = false;

if (dropDownList.SelectedValue.Equals("yes")) {
   valid = !String.IsNullOrEmpty(textBox.Text);
}

return valid;