2016-12-05 12 views
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')で定義したクラスはどこにも表示されません。また、クラスiが$('#modalvalidate').validateを定義すると、フィールドが赤くなり、エラーメッセージが表示されます。あなたがjQueryオブジェクトを期待していたパラメータとして、DOMや生のJavaScriptオブジェクトを持って表示されます

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

場所errorPlacement' '内部デバッガとERROR''の値が何であるかを確認してください。 –

+1

既に.errorクラスがあります –

+0

@MayankPandeyz .validateで定義したクラスは入力フィールドには入りません。クラス全体が存在しないために必要です。 – Laurence

答えて

2

:それはちょうどこれを試してみてくださいjQuery.extend(jQuery.validator.messages

+0

ちょっと、 console.log(e、element) 'これは私が得たものです。これが役立つかどうか分かりませんhttps://gyazo.com/7aff27119e975cfb37e4fce86623e1eb – Laurence

+0

あなたの解決策を' Jquery.extend'と '.validate'に追加しましたが、それらの中には効果がありました:( – Laurence

+0

また、通常のメッセージは正常に表示され、赤色にもなります。 – Laurence

1

に私が定義するデフォルトのメッセージでは動作しません。

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

私はすでに '$("#modalvalidate ")にerrorClassを定義していますvalidate({'しかし、私はデフォルトのエラーを編集したのでそれには応答しません – Laurence

関連する問題