从jQuery Validate 1.7切换到1.11时出现问题

时间:2013-10-02 14:23:35

标签: jquery jquery-validate

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

1 个答案:

答案 0 :(得分:0)

谢谢Sparky .. 我更改了视图中的代码并解决了问题。 首先,在类中添加所有依赖响应控件,例如“skip”,然后从表单验证中忽略此类。

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

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