有没有办法禁用某个验证器(信用卡)的jQuery验证,以便它只发生在onblur,而不是onkeyup?
基于jQuery Validator文档,我以为我可以这样做:
$(function () { $("[data-val-creditcard]").validate({ onkeyup: false }) });
但是,它似乎没有起作用。
我也尝试在我的验证器上执行以下操作:
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 }; } }
它也不起作用,但是我正在使用ValidationParameters来适当使用。
以一种形式输入信用卡号,使其随机从无效更改为有效,然后返回无效,这是一种烦人的事情。
有任何想法吗?谢谢!
解决方法
好吧,
我在同一个问题,发现这个线程:http://old.nabble.com/-validate–onkeyup-for-single-field-td21729097s27240.html
这个想法基本上是覆盖keyup事件并返回false。所以在你的具体情况下,你需要添加:
$('#my-form').validate({ rules: { [...] } } // Disable keyup validation for credit card field $("[data-val-creditcard]").keyup(function() { return false } );
而您会看到,您的信用卡字段仅在模糊或提交时进行检查(但其余的则在键盘上工作)。