¿Hay alguna manera de desactivar la validación de jQuery para un determinado validador (tarjeta de crédito) para que solo se produzca onblur, en lugar de onkeyup?ASP.net MVC 3 jQuery Validación; ¿Deshabilitar discretamente OnKeyUp?
Sobre la base de la documentación de jQuery Validador pensé que podía hacer algo como esto:
$(function() {
$("[data-val-creditcard]").validate({
onkeyup: false
})
});
Sin embargo, no parece estar funcionando.
También probé haciendo lo siguiente en mi validador:
public class CreditCardValidator : DataAnnotationsModelValidator<CreditCardAttribute>
{
string _message;
public CreditCardValidator(ModelMetadata metadata, ControllerContext context, CreditCardAttribute attribute)
: base(metadata, context, attribute)
{
_message = attribute.ErrorMessage;
}
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
var rule = new ModelClientValidationRule
{
ErrorMessage = _message,
ValidationType = "creditcard"
};
rule.ValidationParameters.Add("onkeyup", false);
return new[] { rule };
}
}
No funciona bien, pero yo estaba tomando una puñalada en el uso adecuado de ValidationParameters.
Es un poco molesto ingresar un número de tarjeta de crédito en un formulario y hacer que cambie aleatoriamente de inválido a válido, y luego de nuevo a no válido.
¿Alguna idea? ¡Gracias!
Fantástico consejo para desactivar la clave devolviendo false. – Sam
Este fue el único enfoque que encontré que fue capaz de suprimir la validación de teclado. Fue excesivo ya que estaba haciendo una llamada a Ajax para validar la entrada. Al final, establecí un atributo de datos en el elemento de entrada que estaba controlado por el resultado ajax de un evento onchange para el elemento de entrada. Esto permitió a jquery validar tener un retorno simple verdadero o falso al tiempo que realizaba una solicitud al servidor para la validación de la base de datos. –
Hubo varios eventos para suprimir, hice un marcador de posición simple para ellos, 'var fnfalse = function() {return false; } ', y luego lo usó para bloquear la funcionalidad,' $ (elemento) .keyup (fnfalse) .blur (fnfalse) .focusout (fnfalse); '. –