jquery-validate - example - validar formulario jquery validate
jquery.validation: cómo ignorar los valores predeterminados al validar campos obligatorios (8)
Creo que esto es mejor:
jQuery.validator.addMethod("defaultInvalid", function(value, element)
{
return !(element.value == element.defaultValue);
});
Estoy usando el complemento de validación de jquery para validar un formulario de registro.
Cada campo de entrada de texto tiene instrucciones prellenadas como valores en el cuadro de entrada
ej .: para un cuadro de entrada de texto id = ''Nombre'', el valor predeterminado se establecerá en ''Ingrese su nombre''. He pegado debajo del código de muestra:
<input type="text" id="Name" value="Enter Your Name" onfocus="if(this.value == ''Your Name''){this.value = '''';}" type="text" class="required" onblur="if(this.value == ''''){this.value=''Your Name'';}" size="25" />
Lo que necesito saber es cómo especificar en la regla de validación de manera que el complemento arroje un error de campo requerido si el cuadro de entrada contiene el mensaje predeterminado o los valores vacíos.
Ayuda muy apreciada.
Creo que necesitas agregar el caso "predeterminado" para que esto funcione correctamente:
jQuery.validator.addMethod("defaultInvalid", function(value, element) { switch (element.value) { case "$defaultText": if (element.name == "$defaultText") return false; break; default: return true; break; } });
Hice un parche para jquery.validationEngine para permitir ignorar algún campo de entrada para alguna forma compleja. Hice los siguientes cambios:
- Añadir soporte para jquery.dropkick seleccionar la posición de validación de skining
- Agregar campo de selección no válido para la entrada del valor ve_invalid (para poder mostrar la directiva sin que sea una selección válida)
- Agregue hideAllInstant para eliminar la validación sin demora
- Agregue soporte para el elemento jquery.simpleImageCheck si la entrada original está oculta, use la ubicación de simpleImageCheck en su lugar
- Agregue la clase skipValidate para evitar la validación en algunos campos sin deshabilitarlos
- Solucione el error cuando no coincida con prompt_err indefinido, el destino estaba generando un error
- agregue el soporte de clearField para evitar la validación de jquery.clearField.js
- agregar validateHiddenFields, validación en el campo oculto y no oculto
En su caso, puede usar la modificación de la clase skipValidate para realizar esto. Puede encontrar el script parchado aquí junto con el filtro en inglés (fr one también está disponible):
jquery.validationEngine.js parcheado
jquery.validationEngine-en.js Patched
Debería enviar esos cambios a git hub, pero no tuve tiempo de hacerlo ahora.
Jerome Godbout
Panthera Dental
Para mí lo anterior solo funcionó con los siguientes cambios:
jQuery.validator.addMethod("defaultInvalid", function(value, element)
{
switch (element.value)
{
case "Your Name":
if (element.name == "element_name") return false;
break;
default: return true;
break;
}
});
Pensé una forma de solucionar el problema creando una validación personalizada utilizando validator.addMethod, que es realmente fácil.
He pegado un fragmento de mi bloque de validación a continuación:
//1. Define custom validation
$(document).ready(function()
{
jQuery.validator.addMethod("defaultInvalid", function(value, element)
{
switch (element.value)
{
case "Your Name": -- this will be the default value in the Name text box
if (element.name == "Your Name")
return false;
}
}
//2. Include custom validation in the rules for your element
$("#aspnetForm").validate(
{
rules:
{
Name: "required defaultInvalid"
},
messages:
{
Name: "Please input your name"
}
})
}
He usado el mismo para todos los elementos que tienen valores predeterminados en el formulario. Esto funciona muy bien.
Si desea agregar un mensaje de error personalizado para ello solo use esto.
jQuery.validator.addMethod("defaultInvalid", function(value, element) {
return !(element.value == element.defaultValue);
}, ''Custom Error Message for this field'');
solo agrega esto después de la sección de reglas
onfocusout: function(element) { $(element).valid(); }
y todo estará bien.
$.validator.addMethod("defaultInvalid", function(value, element, param){
var r = $(element).rules();
var req=(this.objectLength(r))?r.required:false; // OR may be var req=r.required; // true, false or undefined.
return !req || (value!=param);
},$.validator.messages.required);
...
,rules:{
message: {
defaultInvalid:$(''#message'').attr(''placeholder'')
}
}
Dicha función toma en consideración los casos de campos "obligatorios" y "opcionales".
La expresión "! Req" reemplaza a propósito "this.optional (element)" porque en algunos casos aparece el mensaje de error "desajuste de dependencia".