2009-09-11 10 views
6

Mam następujące informacje na mojej stronie internetowej.Jak sprawdzić poprawność wymaganego tekstu, gdy wybrana jest opcja "Inne" z listy rozwijanej?

Źródło [DropDownList]

WWW

Wyszukiwarka

Inne

innego źródła [TextBox]

chcę użyć validators ASP.Net (Myślę, że weryfikator porównania), tak t Po wybraniu "Inne" na liście rozwijanej i nie wprowadzono tekstu, uruchamiane jest sprawdzanie poprawności, a strona nie może zostać przesłana.

Czy to możliwe?

Ive starałem się ustawić wartość opcji "Inne" z rozwijanego na string.empty i porównać go do pustego pola tekstowego, ale to nie zadziałało.

Cała rzecz, którą odziedziczyłem, znajduje się wewnątrz kontrolki czarodzieja, w przeciwnym razie podłączyłem skrypt klienta, który sam zainicjuje walidację. Nie sądzę, że mogę to zrobić za pomocą kreatora?

Z góry dziękuję.

Odpowiedz

9

Żaden z ASP.NET warunkiem zatwierdzające pozwalają sprawdzania poprawności warunkowego w oparciu o inną kontrolą. Można to jednak osiągnąć, używając parametru CustomValidator, który przeprowadza sprawdzanie poprawności po stronie klienta, po stronie serwera lub po obu stronach (zalecane jest przynajmniej sprawdzanie poprawności po stronie serwera). Walidatory działają dobrze w połączeniu z kreatorami.

przykład markup ASP.NET:

<asp:DropDownList ID="OptionsDropDownList" runat="server"> 
     <asp:ListItem Text="Website" /> 
     <asp:ListItem Text="Search Engine" /> 
     <asp:ListItem Text="Other" /> 
    </asp:DropDownList> 
    <asp:TextBox ID="OtherTextBox" runat="server" /> 
    <asp:CustomValidator ID="custvOptionsDropDownList" runat="server" ControlToValidate="OptionsDropDownList" 
     ValidateEmptyText="true" Display="Dynamic" ClientValidationFunction="validateOtherTextBox" 
     ErrorMessage="This field is required!" OnServerValidate="ValidateOtherTextBox" /> 

Javascript dla ClientValidationFunction:

<script type="text/javascript" language="javascript"> 
    function validateOtherTextBox(event, args) { 
     var textbox = document.getElementById('<%= OtherTextBox.ClientID %>').value; 
     if (args.Value == 'Other') 
      args.IsValid = (textbox != ''); 
     else 
      args.IsValid = true; 
    } 
</script> 

Code-Behind dla OnServerValidate:

protected void ValidateOtherTextBox(object source, ServerValidateEventArgs args) 
    { 
     if (OptionsDropDownList.SelectedValue == "Other") 
     { 
      args.IsValid = (OtherTextBox.Text.Trim() != ""); 
     } 
    } 

Pamiętaj, że to twój wybór, aby zaimplementować wszystko, czego potrzebujesz. Możesz całkowicie pominąć sprawdzanie poprawności Javascript i usunąć ten kod oraz atrybut ClientValidationFunction. Należy również zauważyć, że JavaScript odnosi się do kontrolki docelowej za pomocą właściwości ClientID. Jest to potrzebne, ponieważ program ASP.NET przypisuje inny identyfikator podczas generowania strony, a użytkownik chce, aby był dostarczany do metody JavaScript w ten sposób (wyświetl źródło na stronie, a zobaczysz, że nazwa kontrolki ma dodatkowe przedrostek itp.).

0

sprawdzić następnie wybierz opcję kto w tym jak w dropdownlist

if (ddl.selecteditemindex == 1){ 
if (txtvalue.text == "") 
{ 
alert('you write something if selected other otherwise choose from a list'); 
} 
}