使用jQuery验证在单独的div中显示错误消息

use*_*301 6 jquery jquery-validate

我正在使用jQuery验证,我想在div中显示错误消息<div class="alert alert-error" id="errorContainer">显示在窗体下面的默认值不适用于我的表单设计.

验证脚本链接到我有表单的页面,它看起来像:

    $(function validate() {

    var rules = {
                rules: {
                    full_name: {
                        minlength: 2,
                        maxlength: 50,
                        required: true
                    },
                    address: {
                        minlength: 5,
                        required: true
                    },
                    city: {
                        minlength: 2,
                        required: true
                    },
                    state: {
                        minlength: 2,
                        maxlength: 2,
                        required: true
                    },
                    zip: {
                        minlength:5, 
                        maxlength:5,
                        required: true
                    },
                    phone: {
                        required: true,
                        phoneUS: true
                    },
                    phone_other: {
                        required: true,
                        phoneUS: true
                    },
                    email: {
                        required: true,
                        email: true
                    },
                    date_to_start: {
                        required: true
                    },
                    ssn: {
                        required: true,
                        ssn: true,
                    },
                    salary: {
                        required: true
                    }

                }
            };

        var validationObj = $.extend (rules, Application.validationRules);

        $('#employment-application').validate(validationObj);

});
Run Code Online (Sandbox Code Playgroud)

现在我尝试更改$('#employment-application').validate(validationObj);为下面的代码,并尝试将其添加到我有表单的页面底部,两者都给出了负面结果.该脚本似乎添加style="display:none;"errorContainer并且不会在任何地方加载任何错误.

(尝试$('#employment-application').validate(validationObj);改为以下)

$("#employment-application").validate({
        errorContainer: "#errorContainer", 
        errorLabelContainer: "#errorContainer", 
        errorElement: "li"
    })
Run Code Online (Sandbox Code Playgroud)

所以重新上限,我想使用jQuery表单验证并显示在单独的div中收到的错误消息,因为默认情况不适用于我的表单设计.

Mat*_*son 18

您可以使用该errorPlacement选项传递这样的回调:http://jsfiddle.net/cMhQ7/

我使用了divid 的标准,即输入元素的名称与_validate后缀连接,但您可以根据需要进行更改.

HTML

<form id="employment-application" method="post">
    <input name="full_name" type="text" />
    <div id="full_name_validate"></div>
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

$(function validate() {

    var rules = {
        rules: {
            full_name: {
                minlength: 2,
                maxlength: 50,
                required: true
            },
        },
        errorPlacement: function (error, element) {
            var name = $(element).attr("name");
            error.appendTo($("#" + name + "_validate"));
        },
    };

    $('#employment-application').validate(rules);

});
Run Code Online (Sandbox Code Playgroud)


小智 5

如果只想将默认位置更改为某些元素,则可以使用此改进。这实现了验证脚本的默认行为

    errorPlacement: function(error, element){
        var name    = $(element).attr("name");
        var $obj    = $("#" + name + "_validate");
        if($obj.length){
            error.appendTo($obj);
        }
        else {
            error.insertAfter(element);
        }
    },
Run Code Online (Sandbox Code Playgroud)