jquery
  • jquery-validate
  • 2016-12-05 47 views 1 likes 
    1


    我正在使用jquery验证来显示错误消息我正在处理默认消息,但我想添加一个类到需要的字段。jquery验证类为默认消息上的元素

    这是我有:

    $(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')定义的类不显示任何地方。而且我定义的类$('#modalvalidate').validate确实使字段变红并显示错误信息。这只是不为默认的消息我在jQuery.extend(jQuery.validator.messages

    +0

    将一个调试器内'errorPlacement'和检查什么是'error'值。 –

    +1

    它已经有一个.error类 –

    +0

    @MayankPandeyz我在.validate定义的类不会在输入字段上我需要它继续infact整个类不存在 – Laurence

    回答

    2

    看样子你有一个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'); 
    } 
    
    +0

    嘿, console.log(e,element)'这是我得到的我不知道这是否有助于https://gyazo.com/7aff27119e975cfb37e4fce86623e1eb – Laurence

    +0

    我将所有解决方案添加到'Jquery.extend'和'.validate',但没有有效果:( – Laurence

    +0

    而且正常的消息显示正常,并使字段红色,以及所有错误的默认消息 – Laurence

    1

    定义工作试试这个:

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

    我已经在我的'$(“#modalvalidate”)中定义了一个errorClass。validate({“但是因为我编辑了一个默认错误,它没有回应那个 – Laurence

    相关问题