2016-05-12 5 views
0

jQueryの検証フォームにルールを動的に追加しています。フィールド名に変数が含まれているため、このルールは動的に追加されます。これがコードです。jQueryはカスタムアクションでルールを追加します

$('#message_' + default_language_id + '_0').rules('add', { 
    required: true, 
    messages: { 
     required: "something is wrong." 
    } 
}); 

このルールでは、フォームの検証時に匿名関数を使用してアクションを実行します。しかし、ドキュメント上で実行されている関数が準備されていなければ、これを行うオプション/方法が見つかりません。

$(document).ready(function(){ 
var default_language_id = $("#default_language_id").val(); 

var validator = $("#message_form").submit(function() { 
tinyMCE.triggerSave(); 

}).validate({ 
    ignore: "", 
    rules: { 
     publish_date: { 
      check_publish_date: true, 
      check_expiry_date: true 
     }, 
     expiry_date: { 
      check_expiry: true, 
     } 
    }, 

    errorElement: "span", 
    errorClass: "help-block", 
    highlight: function (element, errorClass, validClass) { 
     $(element).closest('.form-group').addClass('has-error'); 
    }, 
    unhighlight: function (element, errorClass, validClass) { 
     $(element).closest('.form-group').removeClass('has-error'); 
    }, 
    errorPlacement: function (error, element) { 
     if (element.parent('.input-group').length || element.prop('type') === 'checkbox' || element.prop('type') === 'radio') { 
      error.insertAfter(element.parent()); 
     } else { 
      error.insertAfter(element); 
     } 
    } 
}); 

$('#message_' + default_language_id + '_0').rules('add', { 
    required: true, 
    messages: { 
     required: "something is wrong" 
    }, 
}); 

だから、私はで終わるしたいことは、このようなものがある(これは動作しません):

ここでは、拡張コードスニペットは、より多くのコンテキストでそれを置くことです

$('#message_' + default_language_id + '_0').rules('add', { 
    required: true, 
    messages: { 
     required: "something is wrong." 
    }, 
    onsubmit: function(){ 
     alert("I am only triggered when the form errors on this rule"); 
    } 
}); 

誰も助けることができますか?前もって感謝します。

+0

あなたは絶対** ** '.validate()' submit'ハンドラの内部 'メソッドを持つべきではありません。このメソッドは、**プラグインを初期化する**準備が整ったDOMでのみ使用され、 'click/submit'イベントは自動的に処理されます。 – Sparky

答えて

0

解決した

$('#message_' + default_language_id + '_0').rules('add', { 
    my_new_rule: true 
}); 

$.validator.addMethod("my_new_rule", function(value, element) { 

    // My rule 

}, "something went wrong"); 
関連する問題