2009-09-11 4 views
6

Ich habe Folgendes auf meiner Website.Wie validieren Sie den erforderlichen Text, wenn die Option "Andere" aus einer Dropdown-Liste ausgewählt wird?

Quelle [Dropdownlist]

Webseite

Suchmaschine

Andere

Andere Quellen [TextBox]

Ich möchte die ASP.Net Validatoren verwenden (Ich denke, der Validierer vergleichen) so tha t Wenn "Andere" in der Dropdown-Liste ausgewählt ist und kein Text eingegeben wurde, wird die Validierung ausgelöst und die Seite kann nicht gesendet werden.

Ist das möglich?

Ich habe versucht, den Wert der Option "Andere" im Dropdown auf string.empty und vergleichen Sie es mit einem leeren Textfeld, aber das hat nicht funktioniert.

Die ganze Sache, die ich geerbt habe, ist in einem Wizard-Steuerelement, sonst würde ich ein Client-Skript anschließen, um die Validierung selbst auszulösen. Ich glaube nicht, dass ich das mit einer Zaubererkontrolle machen kann?

Vielen Dank im Voraus.

Antwort

9

Keine der ASP.NET bereitgestellt Validatoren können Sie bedingte Validierung durchgeführt werden auf eine andere Steuerung basiert. Sie können dies jedoch erreichen, indem Sie einen CustomValidator verwenden, der die Überprüfung auf der Clientseite, der Serverseite oder bei beiden vornimmt (mindestens eine serverseitige Validierung wird empfohlen). Die Validatoren funktionieren gut in Verbindung mit Assistenten.

ASP.NET Markup Beispiel:

<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 für 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 für OnServerValidate:

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

Beachten Sie, dass Sie die Wahl haben, was immer Sie benötigen. Sie können die Javascript-Überprüfung komplett überspringen und den Code und das ClientValidationFunction Attribut entfernen. Beachten Sie außerdem, dass das JavaScript auf das Zielsteuerelement verweist, indem Sie die ClientID-Eigenschaft verwenden. Dies ist erforderlich, da ASP.NET beim Ausgeben der Seite eine andere ID zuweist und Sie möchten, dass sie auf diese Weise der JavaScript-Methode zur Verfügung gestellt wird (Quelltext auf der Seite anzeigen und Sie sehen, dass der Name des Steuerelements einen zusätzlichen Wert enthält) Vorwahl usw.).

0

Sie überprüfen dann die Option wählen Sie in Dropdownlist wie diese

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