Diferencia entre revisiones de «Usuario:Juanda/jQuery/Plugins»
De WikiEducator
(→Reglas de validación) |
(→Mediante settings del plugin (opción rules)) |
||
Línea 125: | Línea 125: | ||
*El parámetro rules define para los elementos del formulario que aparecen listados, las reglas de validación que van a tener que cumplir. | *El parámetro rules define para los elementos del formulario que aparecen listados, las reglas de validación que van a tener que cumplir. | ||
</div> | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | *Uso de comillas para parámetros no válidos como variables de JavaScript | ||
+ | <source lang="javascript"> | ||
+ | $("#myform").validate({ | ||
+ | rules: { | ||
+ | // no quoting necessary | ||
+ | name: "required", | ||
+ | // quoting necessary! | ||
+ | "user[email]": "email", | ||
+ | // dots need quoting, too! | ||
+ | "user.address.street": "required" | ||
+ | } | ||
+ | }); | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ===Refactorizar reglas=== | ||
+ | *Si tenemos varios campos con las mismas reglas y mensajes, podemos refactorizar reglas para reducir el código | ||
+ | *Ejemplo: Tenemos varios campos que necesitan tanto required como un minlength de 2 | ||
+ | <source lang="html4strict"> | ||
+ | <input name="customer1" class="required" minlegth="2"/> | ||
+ | <input name="customer2" class="required" minlength="2"/> | ||
+ | <input name="customer3" class="required" minlegth="2"/> | ||
+ | </source> | ||
+ | *Deberíamos definir el los settings del plugin el objeto messages (de forma parecida a como se hace con el objeto rules): | ||
+ | <source lang="javascript"> | ||
+ | messages: { | ||
+ | customer1: { | ||
+ | required: "Este campo es requerido", | ||
+ | minlenght: "Este campo tiene que tener al menos {0} caracteres" | ||
+ | }, | ||
+ | customer2: | ||
+ | ..... | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | *Creemos una regla de validación nueva "a nuestra medida" utilizando addMethod y addClassRules. | ||
+ | <source lang="javascript"> | ||
+ | // alias required to cRequired with new message | ||
+ | $.validator.addMethod("cRequired", $.validator.methods.required, | ||
+ | "Customer name required"); | ||
+ | // alias minlength, too | ||
+ | $.validator.addMethod("cMinlength", $.validator.methods.minlength, | ||
+ | // leverage parameter replacement for minlength, {0} gets replaced with 2 | ||
+ | $.format("Customer name must have at least {0} characters")); | ||
+ | // combine them both, including the parameter for minlength | ||
+ | $.validator.addClassRules("customer", { cRequired: true, cMinlength: 2 }); | ||
+ | </source> | ||
+ | |||
+ | *Nuestro html quedaría así: | ||
+ | <source lang="html4strict"> | ||
+ | <input name="customer1" class="customer"/> | ||
+ | <input name="customer2" class="customer"/> | ||
+ | <input name="customer3" class="customer"/> | ||
+ | </source> | ||
+ | |||
+ | <source lang="javascript"> | ||
+ | $("#myform").validate({ | ||
+ | rules: { | ||
+ | // no quoting necessary | ||
+ | name: "required", | ||
+ | // quoting necessary! | ||
+ | "user[email]": "email", | ||
+ | // dots need quoting, too! | ||
+ | "user.address.street": "required" | ||
+ | } | ||
+ | }); | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | |||
<div class="slide"> | <div class="slide"> |
Revisión de 22:01 28 nov 2013