Moo*_*oon 13 asp.net-mvc jquery jquery-validate asp.net-mvc-3
我正在尝试为我的应用添加自定义不显眼的验证.它似乎没有运行验证.
这是我的属性类:
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(
ModelMetadata metadata, ControllerContext context)
{
yield return new ModelClientValidationRule
{
ErrorMessage = ErrorMessage,
ValidationType = "custrequired"
};
}
Run Code Online (Sandbox Code Playgroud)
我的JavaScript:
$.validator.addMethod('custrequired', function(value, element, param) {
return value && value !== '99:99' && value !== '9:99';
});
$.validator.unobtrusive.adapters.add('custrequired', null, function(options) {
return options.messages['custrequired'] = options.message;
});
Run Code Online (Sandbox Code Playgroud)
Jim*_*iTh 31
这里有很多可能出错的东西,没有涉及你发布的代码:
你如何为<input>外观生成HTML ?它包含data-val-custrequired属性吗?
如果没有,你还记得在类声明中添加接口 - IClientValidatable?
你还记得不在DOM ready处理程序中添加自定义验证器吗?(即不要使用$(document).ready()或$(function() { ... })) - 应在文档准备好之前设置验证.
ETA:最后一个的原因是这样jquery.validate.unobtrusive做:
$(function () {
$jQval.unobtrusive.parse(document);
});
Run Code Online (Sandbox Code Playgroud)
即,它在文档准备好的文档上解析验证属性,规则等.由于该脚本是为了注册您的适配器被加载,你的注册脚本通常要来后 jquery.validate.unobtrusive.js.但这也使.ready你注册的任何处理程序在"不引人注目" 之后被调用- 到那时为时已晚.我想你可以先放置你的注册脚本然后再使用.ready.从未尝试过,我从未见过它.
此外,在这种情况下,这应该足以注册适配器:
$.validator.addMethod('custrequired', function(value, element, param) {
return value && value !== '99:99' && value !== '9:99';
});
jQuery.validator.unobtrusive.adapters.addBool('custrequired');
Run Code Online (Sandbox Code Playgroud)
它仍会添加您可能拥有的任何自定义错误消息,但由于您的验证器未使用其他参数(例如StringLength传递MaximumLength等),因此不需要自定义适配器.
| 归档时间: |
|
| 查看次数: |
12624 次 |
| 最近记录: |