升级到 jQuery 1.8.2 后验证异常

Posted

技术标签:

【中文标题】升级到 jQuery 1.8.2 后验证异常【英文标题】:Validation exception after upgrading to jQuery 1.8.2 【发布时间】:2012-11-23 04:10:28 【问题描述】:

升级到 jQuery 1.8.2 版本后,我的验证插件(最新版本 1.10.0)开始给我异常:

错误:语法错误,无法识别的表达式:div class="warningZone" jquery.js(第 4679 行)

这是我的 javascript

function validateAll() 
    $("#servicesForm").validate(
        errorLabelContainer: "#servicesErrors",
        wrapper: "div class=\"warningZone\"",
        rules: 
            mainTransport:  mMainTransportReq: true, mMainTransportNotReq: true ,
            stay:  mStayReq: true 
        ,
        messages: 
            mainTransport: 
                mMainTransportReq: $("#servicesMainTransportReq").text(),
                mMainTransportNotReq: $("#servicesMainTransportNotReq").text()
            ,
            stay:  mStayReq: $("#servicesStayReq").text() 
        
    );

    $("#servicesForm").valid();
    validatePeriods();
    validateServices();

为什么我的班级 warningZone 开始抛出异常?

【问题讨论】:

如果您将\" 更改为',是否可以解决问题?不知道为什么 JQuery 升级现在会导致这个问题。 不,这不能解决我的问题。 【参考方案1】:

如果您删除上面的wrappererrorLabelContainer 选项,您可以设置默认值并覆盖showErrors 函数:

$.validator.setDefaults(
    showErrors: function(errorMap, errorList) 
        if (errorList.length < 1) 
            // clear the error if validation succeeded
            $('div.warningZone').remove();
            return;
        
        $.each(errorList, function(index, error) 
            $('div.warningZone',"#servicesErrors").remove();
            $('#servicesErrors').append(
                $('<div/>')
                    .addClass('warningZone')
                    .append(error.message)
            );
        );
    
); 

【讨论】:

是的,这似乎是一种解决方法,但我仍然不明白 jQuery 版本之间发生了什么变化。 1.7.2 和 1.8 使我的包装函数不起作用?经过一些测试,如果我在包装函数中使用“li”,它不会抛出异常,但如果我在类中使用“div”或“li” - 它会!!!我在 c 版中找不到任何文档,也找不到验证插件中列出的任何错误。

以上是关于升级到 jQuery 1.8.2 后验证异常的主要内容,如果未能解决你的问题,请参考以下文章

数据库升级后得到 liquibase 校验和验证错误

jquery 3.0.0 升级打破了 html 表格功能

将 Jquery 升级到 3.4 后,Material js 单选按钮禁用不起作用?

升级到 Bootstrap 4、jQuery 3.3.1 后 jQuery .show() /.hide() 无法正常工作

升级到 .NET 6 时,Web 项目引发运行时异常

Laravel 5.5 - 升级身份验证后没有正确重定向