ASP.NET MVC 3 jQuery验证;禁用不引人注意的OnKeyUp?

有没有办法禁用某个验证器(信用卡)的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 } );

而您会看到,您的信用卡字段仅在模糊或提交时进行检查(但其余的则在键盘上工作)。

我正在寻找同样的解决方案,并发现这里的答案可以改进,所以我认为这将是很好的分享在这里

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...