Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.net MVC 3 jQuery Validation; Disable Unobtrusive OnKeyUp?

Tags:

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!

like image 806
Sam Avatar asked Nov 05 '11 19:11

Sam


1 Answers

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.

like image 61
mTorres Avatar answered Oct 01 '22 04:10

mTorres