将jQuery验证错误消息传递给单个框(div)

1 jquery jquery-validate

我已经搜索了很多,但仍然没有想出来......如何将各种错误消息传递给单个框(div),而不是在相关字段附近突出显示它们.让我们说,我有4个必填字段,并为他们提供自定义消息:

<script>
// validation
(function($,W,D)
{
    var JQUERY4U = {};
    JQUERY4U.UTIL =
    {
        setupFormValidation: function()
        {
            //form validation rules
            $("#register-form").validate({
                validClass: "valid",
                errorContainer: $("#error-note"),
                errorLabelContainer: $([]),
                rules: {
                    name: "required",
                    email: {
                        required: true,
                        email: true
                    },
                    birthdate: "required",
                    eua: "required"
                },
                messages: {
                    name: "Name is required",
                    email: "Please, enter your email",
                    birthdate: "We need to know your date of birth",
                    eua: "Please check the checkbox..."
                },
                submitHandler: function(form) {
                    form.submit();
                }
            });
        }
    }
    //when the dom has loaded setup form validation rules
    $(D).ready(function($) {
        JQUERY4U.UTIL.setupFormValidation();
    });
})(jQuery, window, document);
</script>
Run Code Online (Sandbox Code Playgroud)

#error-note是一个div在所有字段之前,我需要获取所有/任何错误消息输出(打印).但现在错误消息在相关字段(我不需要)中"内置".有没有办法实现它?

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Spa*_*rky 10

为SO读者的利益发布的答案.

根据文档中的示例代码,它真的很简单,

$(document).ready(function () {

    $('#myform').validate({ 
        // rules and other options,
        errorLabelContainer: "#error-note",
        wrapper: "li"
    });

});
Run Code Online (Sandbox Code Playgroud)

<div id="error-note"></div> 也必须放在HTML布局中.

工作演示:http: //jsfiddle.net/6kxSp/


注意:

1)OP简单地混淆了他的容器. errorContainer:是第二个可选容器. errorLabelContainer对于包含错误列表的单个框来说已经足够了.


2)这没有任何意义:errorLabelContainer: $([]).如果OP已经阅读了文档中示例代码,他就会看到他刚刚击败了他想要实现的目标. $([])甚至不是一个有效的jQuery选择器.


3)这是不必要和多余的.

submitHandler: function(form) {
   form.submit();
}
Run Code Online (Sandbox Code Playgroud)

根据文档,submitHandler回调函数会在验证后自动提交表单.不需要在submit()这里打电话.


4) 根据文档,这是默认值,无需声明它...

validClass: "valid"
Run Code Online (Sandbox Code Playgroud)

5)包装这样的一切都是多余的,不必要的,冗长的,神秘的......

(function($,W,D)
{
    var JQUERY4U = {};
    JQUERY4U.UTIL =
    {
        setupFormValidation: function()
        {
            $("#register-form").validate({ .... });
        }
    }

    $(D).ready(function($) {
        JQUERY4U.UTIL.setupFormValidation();
    });

})(jQuery, window, document);
Run Code Online (Sandbox Code Playgroud)

除了给寻求指导的人带来更多混淆之外,它没有用处. 它来自Sam Deering的一个流行的,但解释不佳的在线演示/教程,它与许多地方相连.IMO,如果你要以jQuery/JavaScript专家的身份离开,至少要使用JavaScript中常见的代码格式,而不是PHP(Allman)使用的代码格式.无论选择何种代码格式样式,至少要始终如一地使用它.

与任何其他jQuery插件完全一样,只需将.validate()方法包装在DOM ready事件处理程序中就足以正确初始化此插件.

$(document).ready(function() {

    $("#register-form").validate({
        // any rules, options and callbacks
    })

});
Run Code Online (Sandbox Code Playgroud)