jquery 对默认消息中的元素进行验证 class

jquery validation class to element on default message


我正在使用 jquery 验证来显示错误消息 我正在处理默认消息,但我想将 class 添加到所需的字段。

这是我的:

$(document).ready(function(){
  jQuery.extend(jQuery.validator.messages, {
    required:function (e,element) {
        var error = "<div class='page-controls alert alert-danger messagediv2'><strong>Error! </strong><span>Field "+element+" is required</span>" +
        "<button type='button' class='close' onclick='removeMSG()' aria-label='Close'>" +
        "<span aria-hidden='true'>&times;</span>" +
        "</button></div>";
        $("button.close").after(error);
        console.log(element);
        element.addClass('alert alert-danger');
    }
  });
});

.

   $("#modalvalidate").validate({
    errorElement:'div',
    errorClass: 'alert alert-danger',
    validClass: 'alert-success',


    errorPlacement: function(error, element) {
        error.insertAfter("button.close");
        error.addClass('messagediv2');
        error.addClass('page-controls');
    }
});
$('#modalvalidate').on('change', function(){
    $(this).validate();
    if ($('#modalvalidate').valid()) {
        $(".messagediv2").remove();
    }
});

当我尝试它时它说

jquery.validate.min.js:4 Uncaught TypeError: element.addClass is not a function. Exception occurred when checking element

这样做的正确方法是什么?

编辑: 我忘了说我在 $('#modalvalidate') 中定义的 class 没有显示在任何地方。而且我定义的 class $('#modalvalidate').validate 确实使字段变红并显示错误消息就好了。这不适用于我在 jQuery.extend(jQuery.validator.messages

中定义的默认消息

试试这个:

$("#register").validate({
    // your code
    errorClass: 'error help-inline'
});

您似乎有一个 DOM 或原始 JavaScript 对象作为您期望 jQuery 对象的参数。

element 参数不是实际的 DOM 元素和 error 错误详细信息吗?

例如使用 element:

errorPlacement: function(error, element) {
    element.insertAfter("button.close");
    element.addClass('messagediv2');
    element.addClass('page-controls');
}

作为通用解决方案,您可以将参数包装在 $() 中。如果参数已经是一个 jQuery 对象并且将阻止它崩溃,这没有实际效果。

例如

errorPlacement: function(error, element) {
    $(error).insertAfter("button.close");
    $(error).addClass('messagediv2');
    $(error).addClass('page-controls');
}

或者(如果第一个问题是正确的,但还是不行):

errorPlacement: function(error, element) {
    $(element).insertAfter("button.close");
    $(element).addClass('messagediv2');
    $(element).addClass('page-controls');
}