2009-09-11 23 views
6

Tengo lo siguiente en mi sitio web.¿Cómo validar el texto requerido cuando se selecciona la opción "Otro" de una lista desplegable?

Fuente [DropDownList]

sitio web

motor de búsqueda

Otros

Otras fuentes [Cuadro de texto]

Quiero usar los validadores ASP.Net (Creo que el validador de comparación) por lo que t cuando se selecciona "Otro" en la lista desplegable y no se ingresa texto, se activa la validación y no se puede enviar la página.

¿Esto es posible?

He tratado de establecer el valor de la opción "Otro" en el menú desplegable para string.empty y compararlo con un cuadro de texto vacío, pero esto no funcionó.

Todo lo que he heredado está dentro de un control de asistente, de lo contrario conectaría algún script de cliente para activar la validación yo mismo. No creo que pueda hacer esto con un control de asistente?

Gracias de antemano.

Respuesta

9

Ninguno de los validadores ASP.NET proporcionan permiten llevar a cabo la validación condicional basada en otro control. Sin embargo, puede lograr esto utilizando un Custom Validator que realice la validación en el lado del cliente, en el lado del servidor o en ambos (como mínimo, se recomienda la validación del lado del servidor). Los validadores funcionan bien en conjunción con los asistentes.

ejemplo ASP.NET marcado:

<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 para 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> 

de código subyacente para OnServerValidate:

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

Tenga en cuenta que es su elección implementar lo que necesite. Puede omitir completamente la validación de Javascript y eliminar ese código y el atributo ClientValidationFunction. Además, observe que Javascript se refiere al control objetivo mediante el uso de la propiedad ClientID. Esto es necesario ya que ASP.NET asigna una ID diferente cuando se genera la página y usted querrá que se proporcione al método Javascript de esta manera (vea la fuente en la página y verá que el nombre del control tiene un extra prefijo, etc.).

0

comprobar luego la opción que seleccione en la lista desplegable de esta manera

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