2009-09-11 4 views
6

J'ai les éléments suivants sur mon site Web.Comment valider le texte requis lorsque l'option "Autre" est sélectionnée dans une liste déroulante?

Source [DropDownList]

Site

Search Engine

Autres

Autre Source [TextBox]

Je veux utiliser les validateurs ASP.Net (Je pense que le comparateur de comparaison) t lorsque "Autre" est sélectionné dans la liste déroulante et qu'aucun texte n'est saisi, la validation est déclenchée et la page ne peut pas être soumise.

Est-ce possible? J'ai essayé de définir la valeur de l'option "Other" dans la liste déroulante string.empty et de la comparer à une boîte de texte vide, mais cela n'a pas fonctionné.

Tout ce que j'ai hérité est dans un contrôle d'assistant, sinon je connecterais un script client pour déclencher moi-même la validation. Je ne pense pas que je peux le faire avec un contrôle de l'assistant?

Merci d'avance.

Répondre

9

Aucun des ASP.NET fourni validateurs permettent d'effectuer la validation conditionnelle basée sur un autre contrôle. Cependant, vous pouvez réaliser ceci en utilisant un CustomValidator qui effectue la validation côté client, côté serveur, ou les deux (au minimum, la validation côté serveur est recommandée). Les validateurs fonctionnent bien avec les assistants.

exemple de balisage 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 pour 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 pour OnServerValidate:

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

Notez que c'est votre choix pour implémenter tout ce dont vous avez besoin. Vous pouvez complètement ignorer la validation Javascript et supprimer ce code et l'attribut ClientValidationFunction. Notez également que le JavaScript fait référence au contrôle cible en utilisant la propriété ClientID. Cela est nécessaire car ASP.NET attribue un ID différent lorsque la page est sortie et que vous voulez qu'elle soit fournie à la méthode Javascript de cette manière (voir la source sur la page et vous verrez que le nom du contrôle a un extra préfixe, etc.).

0

vous vérifiez alors qui option select dans dropdownlist comme celui-ci

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