C'è un modo per disattivare la convalida jQuery per un determinato validatore (carta di credito) in modo che si verifichi solo onblur, invece di onkeyup?ASP.net MVC 3 jQuery Validation; Disabilita OnKeyUp non invadente?
Sulla base della documentazione jQuery Validator ho pensato che avrei potuto fare qualcosa di simile:
$(function() {
$("[data-val-creditcard]").validate({
onkeyup: false
})
});
Tuttavia, non sembra funzionare.
Inoltre ho provato a fare il seguente sul mio validatore:
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 };
}
}
Non funziona neanche, ma stavo solo prendendo una pugnalata al l'uso appropriato di ValidationParameters.
È piuttosto fastidioso immettere un numero di carta di credito in un modulo e modificarlo casualmente da valido a non valido, quindi tornare a non valido.
Qualche idea? Grazie!
Consiglio fantastico sulla disabilitazione della chiave restituendo false. – Sam
Questo è stato l'unico approccio che ho trovato in grado di sopprimere la convalida del keyup. Era eccessivo perché stavo facendo una chiamata ajax per convalidare l'input. Alla fine, ho impostato un attributo dati sull'elemento input che era controllato dal risultato ajax di un evento onchange per l'elemento input. Ciò ha permesso a jquery di convalidare un semplice ritorno vero o falso mentre faceva ancora una richiesta al server per la convalida del database. –
Ci sono stati diversi eventi da sopprimere, ho fatto un semplice segnaposto per loro, 'var fnfalse = function() {return false; } ', e quindi usato per bloccare la funzionalità,' $ (elemento) .keyup (fnfalse) .blur (fnfalse) .focusout (fnfalse); '. –