使用jquery表单.validate - 同时使用errorPlacement和showErrors

时间:2016-10-21 07:32:51

标签: javascript jquery jquery-validate

我正在尝试使用Jquery .validate插件进行验证。

我不能一起使用errorPlacement和showErrors方法。

的jsfiddle: 工作errorPlacement - http://jsfiddle.net/5RrGa/1861/

工作showErrors - http://jsfiddle.net/5RrGa/1862/

我需要将它们结合起来才能合作。

$("#form").validate({
    ignore: [],
    errorPlacement: function(error, element) {
        // if showErrors exists, this block is skipped. 
        error.insertAfter(element);
    },
    showErrors: function(errorMap, errorList){
        for (var i = 0; errorList[i]; i++) {
           var errorElement = this.errorList[i].element['attributes']['field']['value'];
           $('#allErrors').append("<p>" + errorElement + "</p>");
        }
    },
    submitHandler: function(form) {
        // Submit the form
        form.submit();
    },
    invalidHandler: function(event, validator) {
        // Show message with errors 
        $('#errordiv').show();
    }
});

当我删除showErrors时,errorPlacement工作正常。 如果我尝试使用showErrors,它会跳过errorPlacement。

如果我在errorPlacament之前放置showErrors没有任何变化,errorPlacement仍然无法正常工作。

如何让两种方法一起工作?

2 个答案:

答案 0 :(得分:0)

两者都适用于

showErrors: function(errorMap, errorList){
    this.defaultShowErrors();
},

答案 1 :(得分:0)

你可以这样做:

$(document).ready(function(){
    $("#registerForm").validate({
        errorPlacement: function(error, element) {
            error.insertAfter(element);
        },
        showErrors: function(errorMap, errorList){
                var $errorDiv = $("#errordiv").empty().show();            
            this.defaultShowErrors();
            var errorsCombined = "";
            for(var el in errorMap){
                    errorsCombined += "<b>"+ el + "</b>" + errorMap[el]+"<br/>";
            }
            $errorDiv.append(errorsCombined);
        },
        submitHandler: function(form) {
            // Submit the form
            form.submit();
        },
        invalidHandler: function(event, validator) {
        }
    });
  });

小提琴: http://jsfiddle.net/maverickosama92/5RrGa/1863/