我们刚刚将我们的应用程序从jQuery Validate 1.7移动到1.11,并修改了所有Views中的代码以与1.10版本同步。
但是,对于某个场景,validate.js
会抛出空对象异常。
我已经缩小到js中的一个函数,从该函数抛出此异常但无法到达导致问题的特定LOC /与新版本不兼容。
在排除故障时,我使用的是validate.js
的1.7版本,一切似乎都运行良好。
任何人都可以分享有关如何调试(工具/任何其他方式)或解决此问题的任何信息吗?
注意:我无法共享代码。
解决: 请告诉我,如果这是解决此问题的正确方法,或者我需要更改算法。
在从案例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;
},
答案 0 :(得分:0)
谢谢Sparky .. 我更改了视图中的代码并解决了问题。 首先,在类中添加所有依赖响应控件,例如“skip”,然后从表单验证中忽略此类。
("#form").validate({
groups: { checks: checkbox_names },
groups: { radios: radiobox_names },
errorPlacement: function (error, element) {
//some code
},
ignore: "skip"
});
所以,现在回复动态问题(相关问题)没有任何问题。