【问题标题】:Validation exception after upgrading to jQuery 1.8.2升级到 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 升级现在会导致这个问题。
  • 不,这不能解决我的问题。

标签: javascript jquery jquery-plugins jquery-validate


【解决方案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 版中找不到任何文档,也找不到验证插件中列出的任何错误。
猜你喜欢
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2015-09-15
  • 2016-04-30
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多