Cambie el color del cuadro de texto usando el Validador de campo obligatorio. Sin controles de extensión, por favor

Necesito cambiar el color de TextBox siempre que se active el validador de campo requerido al hacer clic en el botón Enviar

Lo que puede hacer es registrar una función de Javascript que iterará a través de la matriz global Page_Validators después del envío y podrá establecer el fondo de manera apropiada. Lo bueno de esto es que puedes usarlo en todos tus controles en la página. La función se ve así:

function fnOnUpdateValidators() { for (var i = 0; i < Page_Validators.length; i++) { var val = Page_Validators[i]; var ctrl = document.getElementById(val.controltovalidate); if (ctrl != null && ctrl.style != null) { if (!val.isvalid) ctrl.style.background = '#FFAAAA'; else ctrl.style.backgroundColor = ''; } } } 

El último paso es registrar la secuencia de comandos con el evento OnSubmit:

VB.NET:

 Page.ClientScript.RegisterOnSubmitStatement(Me.GetType, "val", "fnOnUpdateValidators();") 

DO#:

 Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "val", "fnOnUpdateValidators();"); 

Mantendrá el estado correcto de IsValid en todo su código y puede funcionar con todos sus controles.

Nota: Encontré esta solución del siguiente blog . Solo quería documentarlo aquí en caso de que el blog de origen deje de funcionar.

Puede anular fácilmente la función javascript de ASP.NET que actualiza la visualización de los campos validados. Esta es una buena opción ya que puede mantener sus Validadores de campo existentes, y no tiene que escribir ninguna lógica de validación personalizada ni buscar los campos para validar. En el siguiente ejemplo, agrego / elimino una clase ‘error’ del elemento padre que tiene la clase ‘control-group’ (porque estoy usando twitter bootstrap css ):

  /** * Re-assigns the ASP.NET validation JS function to * provide a more flexible approach */ function UpgradeASPNETValidation() { if (typeof (Page_ClientValidate) != "undefined") { AspValidatorUpdateDisplay = ValidatorUpdateDisplay; ValidatorUpdateDisplay = NicerValidatorUpdateDisplay; } } /** * This function is called once for each Field Validator, passing in the * Field Validator span, which has helpful properties 'isvalid' (bool) and * 'controltovalidate' (string = id of the input field to validate). */ function NicerValidatorUpdateDisplay(val) { // Do the default asp.net display of validation errors (remove if you want) AspValidatorUpdateDisplay(val); // Add our custom display of validation errors if (val.isvalid) { // do whatever you want for invalid controls $('#' + val.controltovalidate).closest('.control-group').removeClass('error'); } else { // reset invalid controls so they display as valid $('#' + val.controltovalidate).closest('.control-group').addClass('error'); } } // Call UpgradeASPNETValidation after the page has loaded so that it // runs after the standard ASP.NET scripts. $(document).ready(UpgradeASPNETValidation); 

Esto se adapta muy levemente desde aquí y con información útil de estos artículos .