我们刚刚将我们的应用程序从 jQuery Validate 1.7 移至 1.11,并修改了所有视图中的代码以与 1.10 版本同步。
但是,对于一个场景,validate.js
是抛出空对象异常。
我已经缩小到 js 中的一个函数,从该函数抛出此异常但无法到达导致问题的特定 LOC/与新版本不兼容。
在进行故障排除时,我使用了 1.7 版本,validate.js
一切似乎都运行良好。
任何人都可以分享有关如何调试(工具/任何其他方式)或解决此问题的任何信息吗?
注意:我不能分享代码。
解决方案: 如果这是解决此问题的正确方法或者我需要更改我的算法,请告诉我。
在从案例 2 移动到案例 1 时出现此问题(请参阅有问题的评论),因为在这种情况下,只有选中的“复选框”被发回服务器而不是组。
因此,validationtargetFor 在 validate.js 中失败,因为传入的元素是控件而不是组,因此index [0]
会引发错误
validationTargetFor: function (element) {
// if radio/checkbox, validate first element in group instead
if ( this.checkable(element) ) {
element = this.findByName( element.name ).not(this.settings.ignore)[0];
}
return element;
},
将其更改为:
validationTargetFor: function (element) {
// if radio/checkbox, validate first element in group instead
if (this.checkable(element)) {
if (this.findByName(element.name).not(this.settings.ignore)[0] == undefined)
return element;
else
return this.findByName(element.name).not(this.settings.ignore)[0];
}
return element;
},