2016-05-24 6 views
0

jQueryバリデータのハイライトとハイハイト関数をオーバーライドして、通常の操作を行い、別のクラスを親要素に追加したいと考えています。 jQueryの検証ハイライト/非ハイライトメソッドをオーバーライド

は基本的に私はこれをしたい:(私は助けを必要とする場合にはベース..一部を望む)
jQuery.validator.setDefaults({ 
     highlight: function(element, errorClass, validClass) { 
      base.highlight(element, errorClass, validClass); 
      element.parents('div.form-group').addClass('has-error'); 
      }, 
     unhighlight: function(element, errorClass, validClass) { 
      base.unhighlight(element, errorClass, validClass); 
      element.parents('div.form-group').removeClass('has-error'); 
      }, 
    }); 

This question

は、しかし、その答えは動作しませんまったく同じことを求めています。元の関数は渡されていません。おそらくコードは変更されていますか?

+0

あなたの質問に再度尋ねるのではなく、賞金を払ってください。可能であれば、フィドルを提供してください。 – dude

答えて

1
highlight: function(element, errorClass, validClass) { // line 1 
    base.highlight(element, errorClass, validClass); // go to line 1 
    .... 

あなたはhighlight()unhighlight()内からhighlight()unhighlight()を呼び出すことはできません。どうして?任意のカスタムコールバック関数はプラグインの組み込み関数を完全にオーバーライドするので、上で提案したロジックがうまくいけば、無限にループされます。私は単純にwithin the pluginからデフォルトの機能の肉をコピーし、彼らは通常とも親要素

に別のクラスを追加何するjQueryのバリデータでハイライトやハイライトを消し機能を上書きしたい

必要に応じて変更してください。

jQuery.validator.setDefaults({ 
    highlight: function(element, errorClass, validClass) { 
     // default function 
     if (element.type === "radio") { 
      this.findByName(element.name).addClass(errorClass).removeClass(validClass); 
     } else { 
      $(element).addClass(errorClass).removeClass(validClass); 
     } 
     // custom additions 
     element.parents('div.form-group').addClass('has-error'); 
    }, 
    unhighlight: function(element, errorClass, validClass) { 
     // default function 
     if (element.type === "radio") { 
      this.findByName(element.name).removeClass(errorClass).addClass(validClass); 
     } else { 
      $(element).removeClass(errorClass).addClass(validClass); 
     } 
     // custom additions 
     element.parents('div.form-group').removeClass('has-error'); 
    }, 
}); 

元の関数は、渡されていません。おそらく、コードは以降変更されていますか?

私は彼らが何を考えていたのか、彼らの解決策がこれまでに働いたのか分かりません。 jQuery Validateプラグインにカスタムコールバック関数を使用すると、プラグインに組み込まれているデフォルト関数を完全にオーバーライドします。 は(これは、jQueryのプラグインのユーザー設定可能なオプションがどのように働くかある...彼らはオーバー乗っ/交換する組み込みのデフォルト値。)

だから、単にカスタムコールバック関数の中にプラグインから元のコードをコピーして、それらを変更必要に応じて。

+0

ありがとうございます。しかし、いつかjQueryのアップグレードを行っても危険性がありますか?彼ら自身の機能を呼び出すほうが安全だと思われます。しかし、私はそれが可能ではないと思う。 – Greg

+0

@Greg、 'highlight'と' unhighlight'関数は単純にクラスを追加/削除するので、AFAIKはほとんど変更されませんでした。 change-logを参照してください:https://github.com/jzaefferer/jquery-validation/blob/master/changelog.md – Sparky

+0

@Greg、「ハイライト」が「非ハイライト」で必要なことをしている限り、将来、組み込み関数がどのように変わるかについて心配しています。それにかかわらず、あなたの関心事は、あらゆるjQueryプラグインのユーザ設定可能なオプションごとに同じです...時々、オプションは廃止、置き換え、または追加されます。使用可能なオプションを使用してデフォルトをオーバーライドするか、使用しないでください。 – Sparky

関連する問題