-1

我们刚刚将我们的应用程序从 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;
        },
4

1 回答 1

0

谢谢 Sparky .. 我更改了视图中的代码并解决了问题。首先,在一个类中添加所有相关的响应控件,比如“跳过”,然后从表单验证中忽略这个类。

("#form").validate({
        groups: { checks: checkbox_names },
        groups: { radios: radiobox_names },
        errorPlacement: function (error, element) {
           //some code            
        },
        ignore: "skip"
    });

所以,现在动态问题(相关问题)被发回,没有任何问题。

于 2013-10-03T15:16:11.773 回答