[英]Multiple forms on page with jquery unobtrusive validation in ASP.NET MVC
[英]ASP.net MVC 3 jQuery Validation; Disable Unobtrusive 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的适当使用进行了尝试。
以某种形式输入信用卡号,然后随机将其从无效更改为有效,然后又变为无效,这很烦人。
有任何想法吗? 谢谢!
$.validator.setDefaults
不适用于非侵入式验证,因为验证器是在内部初始化的。
要更改使用非侵入式验证的表单上的设置,您可以执行以下操作:
var validator = $("form").data("validator");
if (validator) {
validator.settings.onkeyup = false; // disable validation on keyup
}
好了朋友们,
我遇到了同样的问题,发现了这个线程: 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 } );
而且您会看到,您的信用卡字段仅在模糊或提交时被选中(但其余字段也在键控上起作用)。
我一直在寻找相同的解决方案,但发现这里的答案可以改善,因此我认为在这里分享它会很好。
我意识到这是一篇过时的文章,但是似乎没有任何答案可以回答这个问题,
如何禁用onkeyup并启用onblur?
我一直在寻找这个,所以我想分享答案。
正如本·福斯特(Ben Foster)正确地说的,可以通过执行以下操作来禁用onkeyup
var validator = $("form").data("validator");
if (validator) {
validator.settings.onkeyup = false;
}
为了启用onblur验证,我们可以使用onfocusout
validator.settings.onfocusout = function(element)
{
$(element).valid();
};
因此,我们的禁用onkeyup和启用onblur的代码如下所示
var validator = $("form").data("validator");
if (validator)
{
validator.settings.onkeyup = false;
validator.settings.onfocusout = function(element)
{
$(element).valid();
};
}
不知道如何将其设置为特定字段,但是您可以尝试使用此方法来禁用键盘验证(针对所有字段):
$.validator.setDefaults({
onkeyup: false
})
看到
您也可以使用上述类似内容,
$("form").validate({
onfocusout: false,
onkeyup: false
});
如果您有自定义规则,
$("form").validate({
onfocusout: false,
onkeyup: false,
rules: {
"name1": {
required: true,
email: true,
maxlength: 100
},
"name2": {
required: true,
number: true
}
}
});
jQuery论坛中的这个答案对我很有帮助。
您可以在功劳字段的onfocus事件中将默认值设置为off,然后在onblur中将其关闭。 似乎很乱,但可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.