tag route page net asp asp.net validation requiredfieldvalidator

asp.net - page - asp route tag helper



Activa o desactiva dinámicamente RequiredFieldValidator según el valor de DropDownList (7)

¿Por qué no utilizar un CustomValidator en este caso? Desactivar / encender un RequiredFieldValidator podría llevar a un problema de diseño en el futuro. Me limitaría a usarlos en campos que serán necesarios.

Tengo un formulario ASP.NET con tres entradas de texto, una para "Teléfono de trabajo", "Teléfono de casa" y "Teléfono celular". Cada una de estas entradas de texto tiene un RequiredFieldValidator asociado. También tengo una DropDownList donde el usuario puede seleccionar el tipo de teléfono preferido.

Solo quiero requerir el campo que está seleccionado en DropDownList. Por ejemplo, si el usuario selecciona "Teléfono de trabajo" de DropDownList, quiero desactivar RequiredFieldValidator para "Teléfono de casa" y "Teléfono celular", por lo que solo se requiere el campo "Teléfono de trabajo".

Tengo un método que habilita y deshabilita estos validadores según el valor de DropDownList, pero no puedo saber cuándo llamarlo. Quiero que este método se ejecute antes de que la validación tenga lugar en la página. ¿Como podría hacerlo?


Cuando está usando el teléfono de su hogar, en el evento desplegable seleccionado en el índice de cambio, haga que los validadores de campo requeridos sean invisibles.

me gusta..

si se selecciona el teléfono para el hogar,

homephonevalidator.visible=true cellphonevalidator.visible=false workphonevalidator.visible=false

si el teléfono celular está seleccionado,

homephonevalidator.visible=false cellphonevalidator.visible=true workphonevalidator.visible=false

si se selecciona el teléfono móvil,

homephonevalidator.visible=false cellphonevalidator.visible=false workphonevalidator.visible=true



Esta es una buena forma de habilitar e inhabilitar la validación del control del servidor desde el evento jquery:

<label class="label_radio" for="Oversize" onclick="EnableDisbledValidator(''show'')">show textbox</label> <asp:TextBox ID="txtNote" runat="server" class="checkvalidation"></asp:TextBox> <asp:RequiredFieldValidator ID="rfvNote" runat="server" ControlToValidate="txtNote" SetFocusOnError="true" ErrorMessage="Please enter the note" Display="Dynamic" CssClass="error-tooltip"></asp:RequiredFieldValidator> function EnableDisbledValidator(lblShow) { if (lblShow == "hide") {; ValidatorEnable($(''#<%=rfvNote.ClientID %>'')[0], false); } else { ValidatorEnable($(''#<%=rfvNote.ClientID %>'')[0], true); } }


La posible forma sería:

  • Establecer en su DropDownList AutoPostBack="true"
  • En el controlador de eventos SelectedIndexChanged de DropDownList habilite / deshabilite sus validadores
  • Establezca en su DropDownList CausesValidation="false" para evitar que los validadores bloqueen una devolución de datos cuando cambie la entrada DropDownList.

OnChange of DropDownlist, necesitará registrar un controlador de eventos del lado del servidor que habilite / deshabilite el validador ...

HTH


Puedes hacer esto con JavaScript así:

ValidatorEnable(RequiredFieldValidatorId, false);

Luego haga que su lista desplegable use el evento onchange (sugiero usar jQuery)

$("#<%=dropDownList.ClientID %>").change(function(){ var val = $(this).val(); var skip = null; if (val == 1) skip = "workPhoneValidator"; else if (val == 2) skip = "cellPhoneValidator"; .... // by popular demand... var $skip = $("#" + skip)[0]; if (skip != "workPhoneValidator") ValidatorEnable($skip, false); if (skip != "cellPhoneValidator") ValidatorEnable($skip, false); .... });