¿Qué es la validación discreta de jQuery?

148

Sé lo que es el complemento jQuery Validation. Sé que la biblioteca de validación discreta jQuery fue realizada por Microsoft y se incluye en el marco ASP.NET MVC. Pero no puedo encontrar una sola fuente en línea que explique de qué se trata. ¿Cuál es la diferencia entre la biblioteca de validación jQuery estándar y la versión "discreta"?

usuario1438940
fuente
2
la validación discreta agregará atributos data-val -... en el HTML, para que pueda leer la validación incluso en la fuente HTML.
Preben Huybrechts
3
Creo que la respuesta a su pregunta se explica aquí: bradwilson.typepad.com/blog/2010/10/... Explica la diferencia entre lo que sucede cuando Unobtrusive está activado o desactivado.
Tommy

Respuestas:

123

Brad Wilson tiene un par de excelentes artículos sobre validación discreta y ajax discreto .
También se muestra muy bien en este video de Pluralsight en la sección sobre "AJAX y JavaScript".

Básicamente, es simplemente la validación de Javascript que no contamina su código fuente con su propio código de validación . Esto se hace mediante el uso de data-atributos en HTML.

bertl
fuente
¿Puede decirnos las mejoras realizadas en mvc3 para validaciones discretas?
wwcdwdcw
El enlace al video está roto.
Misha Moroshko
Gracias @MishaMoroshko por señalar eso. No pude encontrar ninguna alternativa en Pluralsight por ahora, así que eliminé el enlace. Editaré la publicación nuevamente tan pronto como tenga un sustituto.
bertl
Algunos ejemplos de código serían buenos. Debido a que su respuesta no es realmente tan útil, la mayoría de las personas que vienen aquí buscando soluciones rápidas y ejemplos de código, no enlaces a artículos, pueden romperse con el tiempo, son generalmente buenos como referencia después de que vea El ejemplo de código. Prefiero las siguientes 2 respuestas.
Owen
107

Con la manera discreta:

  • No tiene que llamar al método validate ().
  • Usted especifica los requisitos utilizando atributos de datos (data-val, data-val-required, etc.)

Jquery Validate Ejemplo :

<input type="text" name="email" class="required">
<script>
        $(function () {
            $("form").validate();
        });
</script>

Jquery Validate Ejemplo discreto :

<input type="text" name="email" data-val="true" 
data-val-required="This field is required.">  

<div class="validation-summary-valid" data-valmsg-summary="true">
    <ul><li style="display:none"></li></ul>
</div>
James Lawruk
fuente
44
Gracias, estaba tratando de hacer Ctrl-F para encontrar la llamada valdiate () en algún código en el que tenía que trabajar. Me preguntaba por qué no pude encontrarlo
bio595
2
Sí, "discreto" parece ser un eufemismo para "no detectable" aquí.
ReactingToAngularVues
18

Para aclarar, aquí hay un ejemplo más detallado que demuestra la Validación de formularios usando jQuery Validation Unbtrusive.

Ambos usan el siguiente JavaScript con jQuery:

  $("#commentForm").validate({
    submitHandler: function(form) {
      // some other code
      // maybe disabling submit button
      // then:
      alert("This is a valid form!");
//      form.submit();
    }
  });

Las principales diferencias entre los dos complementos son los atributos utilizados para cada enfoque.

Validación de jQuery

Simplemente use los siguientes atributos:

  • Conjunto requerido si es necesario
  • Establecer el tipo de formato adecuado (correo electrónico, etc.)
  • Establezca otros atributos como el tamaño (longitud mínima, etc.)

Aquí está la forma ...

<form id="commentForm">
  <label for="form-name">Name (required, at least 2 characters)</label>
  <input id="form-name" type="text" name="form-name" class="form-control" minlength="2" required>
  <input type="submit" value="Submit">
</form>

jQuery Validation Discreto

Se necesitan los siguientes atributos de datos:

  • data-msg-required = "Esto es obligatorio".
  • data-rule-required = "verdadero / falso"

Aquí está la forma ...

<form id="commentForm">
  <label for="form-x-name">Name (required, at least 2 characters)</label>
  <input id="form-x-name" type="text" name="name" minlength="2" class="form-control" data-msg-required="Name is required." data-rule-required="true">
  <input type="submit" value="Submit">
</form>

Según cualquiera de estos ejemplos, si los campos del formulario requeridos se han completado y cumplen con los criterios de atributos adicionales, aparecerá un mensaje que notificará que todos los campos del formulario están validados. De lo contrario, habrá texto cerca de los campos del formulario ofensivo que indica el error.

Referencias: - Validación de jQuery: https://jqueryvalidation.org/documentation/

Richard Nalezynski
fuente
7

jQuery Validation Unobtrusive Native es una colección de extensiones auxiliares HTML ASP.Net MVC. Estos utilizan el soporte nativo de jQuery Validation para la validación impulsada por los atributos de datos HTML 5. Microsoft devolvió jquery.validate.unobtrusive.js con MVC 3. Proporcionó una forma de aplicar validaciones de modelo de datos al lado del cliente utilizando una combinación de validación jQuery y atributos de datos HTML 5 (esa es la parte "discreta").

bimal
fuente