asp.net如何根据下拉列表选择设置文本框长度? C#

时间:2014-08-27 10:30:15

标签: c# asp.net validation visual-studio-2012 code-behind

下拉列表包含三个国家/地区,如何根据所选国家/地区设置要在邮政编码文本框中输入的最小位数。 例如,如果用户选择America,则邮政编码文本框应设置为" [0-9] {6}"。但如果他们选择澳大利亚,则邮政编码应为" [0-9] {4}"。

    <asp:DropDownList ID="dropDownList" runat="server">
    <asp:ListItem  Value="-1">Country</asp:ListItem>
    <asp:ListItem>America</asp:ListItem>
    <asp:ListItem>Australia</asp:ListItem>
    <asp:ListItem>Sweden</asp:ListItem>
    </asp:DropDownList>

    <asp:RequiredFieldValidator ID="RequiredFieldValidateCountry"    
    initialValue="-1"
    ForeColor="Red" 
    runat="server"
    ErrorMessage="Please choose Country" 
    ControlToValidate="dropDownList"/>

    <asp:Label ID="Label1" runat="server" Text="PostCode"></asp:Label>
    <asp:textbox id="TextBox1" runat="server" ></asp:textbox>
    <asp:CustomValidator id="CustomValidator1" runat="server" 
    OnServerValidate="TextValidate" 
    ControlToValidate="TextBox1" 
    ErrorMessage="Invalid postcode.">
    </asp:CustomValidator>

    <asp:Button ID="BtnNext" runat="server" Text="Next" />

2 个答案:

答案 0 :(得分:0)

您可以在下拉列表的SelectedIndexChanged事件中执行此操作。在下拉列表中将AutoPostback设置为true,根据您的需要编写类似的描述逻辑。

private void dropDownList_SelectedIndexChanged(object sender, System.EventArgs e)
{
    //your logic, something like that
    if(dropDownList.SelectedText =="America")
    {
       TextBox1.MaxLength= your value ...
    }
}

<asp:DropDownList ID="dropDownList" runat="server" AutoPostback = "true">

修改 您可以使用预定义的值检查文本框的字符总数。

int minlength = 5;
if(textbox1.text.length < minlength)
{
   //Flag error on validation label
}
else
{
   //your stuff
}

答案 1 :(得分:0)

您还有asp .net下拉列表的客户端事件。如果下拉选项更改而不回发到服务器,则可以设置要执行的javascript函数。这将使体验更加简化,您可以直接使用jquery更改最小和最大长度。

你可以这样做:

DropDownList1.Attributes.Add("onChange", "return OnSelectedIndexChange();")