Проверка TextBox на основе выбора DropDownList - PullRequest
4 голосов
/ 11 февраля 2012

Мне нужно проверить TextBox на основе значения, выбранного в DropDownList элементах управления.У меня есть элементы управления asp:TextBox и asp:DropDownList.

Если пользователь выбирает параметр Yes в первом раскрывающемся списке, он должен ввести значение в текстовое поле.Как я могу проверить второй ящик?Спасибо за помощь.

Ответы [ 3 ]

4 голосов
/ 11 февраля 2012

Самый простой подход - установить для свойства 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
0 голосов
/ 11 февраля 2012

Добавьте элемент управления CustomValidator, который проверяет TextBox, оттуда вам нужно будет сделать что-то подобное (при условии C #) в обработчике CustomValidator_ServerValidate:

bool valid = false;

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

return valid;
0 голосов
/ 11 февраля 2012

Добавьте этот код к вашей кнопке отправки.

if(DropDownList1.SelectedItem.Text.Equals("Yes") && TextBox1.Text.Length==0)
{
        Page.ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('Enter data in the textbox !');", true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...