es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo detener la validación de jQuery en el evento de carga de formulario en ASP.NET Core MVC?

Login.cshtml

@model UserModel
<script> src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.19.0/jquery.validate.min.js">  
</script>   
<script src="https://ajax.aspnetcdn.com/ajax/mvc/5.2.3/jquery.validate.unobtrusive.min.js">  
</script>  
<form id="form-submit" asp-controller="User" asp-action="Update" method="post" 
class="form-horizontal">
 <div class="form-group padding-left">
        <label asp-for="Password">Contraseña</label>
        <input type="password" asp-for="Password" class="form-control" />
        <span asp-validation-for="Password" class="text-danger"></span>
    </div>
</form>


public class UserModel
{
    [Required]        
    [DataType(DataType.Password)]
    public string Password { get; set; }
 }

  // Controllador
  public async Task<IActionResult> Update([FromQuery] UserModel)
   {
     return View("Login", UserModel);
   }

Con el código de marcado anterior y el script de validación de jQuery, la validación del campo de formulario ocurre incluso antes de que el usuario interactúe con los campos de entrada, es decir, cuando el formulario se carga en el navegador, se cargan los campos junto con los mensajes de error relacionados con la validación.

Pero mi expectativa es que la validación del campo de formulario debería ocurrir SOLAMENTE cuando el usuario interactúa con los controles y proporciona algunas entradas inválidas. ¿Qué me estoy perdiendo? ¿Cómo lograrlo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el comportamiento deseado de validación de los campos del formulario solo cuando el usuario interactúa con los controles y proporciona entradas inválidas, puedes eliminar el script jquery.validate.unobtrusive.min.js del código de marcado. Este script es responsable de habilitar la función de validación discreta en ASP.NET Core MVC, la cual realiza validación del lado del cliente basada en las anotaciones de datos aplicadas a las propiedades del modelo.

    Una vez que elimines este script, la validación de los campos del formulario no se realizará automáticamente cuando este se cargue en el navegador. En cambio, solo ocurrirá cuando el usuario interactúe con los controles y proporcione algunas entradas inválidas.

    Aquí tienes una versión actualizada del código de marcado sin el script jquery.validate.unobtrusive.min.js:

    @model UserModel
    <script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.19.0/jquery.validate.min.js"></script>   
    <form id="form-submit" asp-controller="User" asp-action="Update" method="post" class="form-horizontal">
        <div class="form-group padding-left">
            <label asp-for="Password">Contraseña</label>
            <input type="password" asp-for="Password" class="form-control">
            <span asp-validation-for="Password" class="text-danger"></span>
        </div>
    </form>
    

    Con este cambio, la validación de los campos del formulario solo ocurrirá cuando el usuario interactúe con el campo de contraseña y proporcione alguna entrada inválida. El script jquery.validate.min.js aún se incluye para proporcionar la funcionalidad de validación.

Comments are closed.