Проверка, чтобы заставить пользователя заполнить все два текстовых поля или нет

У меня два TextBox на моей странице, и я хочу, чтобы, когда пользователь заполнил одно из них, я предупредил его, чтобы он заполнил другое текстовое поле, я имею в виду заставить пользователя заполнить все два текстовых поля или ни того, ни другого. Как реализовать это с помощью валидаторов, если применимо?

Я добавил этот элемент управления на своей странице

  <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <asp:RequiredFieldValidator ControlToValidate="txt1" Enabled="True" ID="required_validator1" runat="server" Text="Required" Visible="True" ValidationGroup="T"/>
        <asp:TextBox ID="txt1" OnTextChanged="TextBox1_TextChanged" runat="server" AutoPostBack="True"  />

        <asp:RequiredFieldValidator ControlToValidate="txt2" Enabled="True" ID="required_validator2" runat="server" Text="Required" Visible="True" ValidationGroup="T" />
        <asp:TextBox ID="txt2" CausesValidation="False" Enabled="False" runat="server" />
        <asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="T" OnClick="Button1_Click" />

и в моем Webform.aspx.cs:

  protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        if (txt1.Text.Length > 0)
            txt2.Enabled = true;
    }

а также:

  protected void Button1_Click(object sender, EventArgs e)
    {
        if (txt1.Text == string.Empty && txt2.Text == string.Empty)
        {
            required_validator1.Enabled = false;
            required_validator2.Enabled = false;
        }
    }

я хочу, чтобы пользователь ничего не писал на txt1 и затем он нажимает на кнопку, предупреждение валидатора не показывает ему разрешить ему возобновить, но это не работает, как я могу сделать это?

1 ответ

Используйте логику. Задавать Required Field validator на обоих textboxes, а также disable второе текстовое поле. Если пользователь вводит что-либо в 1-й textbox затем включите 2-й textbox,

Вы можете реализовать это с помощью JavaScript. Просто установите событие textchange первого текстового поля и проверьте, если его длина текста больше 1, затем включите 2-ое текстовое поле.

ASPX:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>    
        <asp:RequiredFieldValidator ControlToValidate="txt1" Enabled="True" ID="required_validator1" runat="server" Text="Required" Visible="True" />
        <asp:TextBox ID="txt1" OnTextChanged="TextBox1_TextChanged" runat="server" />

        <asp:RequiredFieldValidator ControlToValidate="txt2" Enabled="True" ID="required_validator2" runat="server" Text="Required" Visible="True" />
        <asp:TextBox ID="txt2" CausesValidation="False" Enabled="False" runat="server" />       
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="txt1" EventName="TextChanged" />
    </Triggers>
</asp:UpdatePanel>

C#:

protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    if(txt1.Text.Length > 0)
        txt2.Enabled = true;
}
Другие вопросы по тегам