如何解决为什么jQuery.validator.unobtrusive.adapters.addBool无法按预期工作?
我已经建立了一个客户端自定义验证规则,该规则可使用非侵入式验证工作,如下所示。
$(function () {
$.validator.addMethod('custom',function (value,element,params) {
return (value == 47);
});
var input = $("#myField");
input.rules("add",{
custom: true,messages: {
custom: "The value must be 47"
}
});
});
<input name="myField" id="myField" type="number" value="">
<span class="field-validation-valid text-danger" data-valmsg-replace="true" data-valmsg-for="myField"></span>
但是,我随后尝试通过以下操作来改进代码,以使其真正“不显眼”:
$(function () {
$.validator.addMethod('custom',params) {
return (value == 47);
});
$.validator.unobtrusive.adapters.addBool('custom');
});
<input name="myField" id="myField" type="number" value="" data-val-custom="The value must be 47" data-val="true">
<span class="field-validation-valid text-danger" data-valmsg-replace="true" data-valmsg-for="myField"></span>
但是addBool()方法似乎不起作用,并且不会产生错误。我错过了什么?预先谢谢你。
解决方法
问题是因为addBool()
方法是在jQuery函数中调用的。
$(function()
{
//do stuff
})
将其更改为自调用函数是可行的,大概是因为addBool()
在jQuery.validate.unobtrusive.js
内被称为 before 而不是 after 。
(function()
{
//do stuff
})()
今天早上我实际上遇到了相反的问题,下面的代码段必须在jQuery函数中而不是在自调用函数中才能起作用。
var input = $("#myField");
input.rules("add",{
custom: true,messages: {
custom: "The value must be 47"
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。