ASP.net MVC 3 jQuery Validation; Disable Unobtrusive OnKeyUp?
asp.net-mvc, asp.net-mvc-3, jquery, jquery-validate
Solution
Ok guys,
I was in the same problem and found this thread: http://old.nabble.com/-validate--onkeyup-for-single-field-td21729097s27240.html
The idea is basically to overwrite the keyup event and return false. So in your specific case you'll need to add:
$('#my-form').validate({
rules: {
[...]
}
}
// Disable keyup validation for credit card field
$("[data-val-creditcard]").keyup(function() { return false } );
And you'll see that your credit card field is only checked on blur or submit (but the rest is working on keyup also).
I was looking for the same solution, and found that the answer here could be improved, so I thought it would be nice to share it here.
Problem
Is there a way to disable the jQuery Validation for a certain validator (creditcard) so that it only occurs onblur, instead of onkeyup? Based on the jQuery Validator documentation I thought I could do something like this: ``` $(function () { $("[data-val-creditcard]").validate({ onkeyup: false }) }); ``` However, it doesn't seem to be working. I also tried doing the following on my validator: ``` 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 }; } } ``` It doesn't work either, but I was just taking a stab at the appropriate use of ValidationParameters. It is kind of annoying to be entering a credit card number in a form and having it randomly change from invalid to valid, then back to invalid. Any ideas? Thanks!