2012-06-15 13 views
5

jqueryウィジェット内のメソッドをオーバーライドしようとしています。方法はhttps://github.com/got5/tapestry5-jquery/blob/master/src/main/resources/org/got5/tapestry5/jquery/validation.jsjqueryウィジェット内のオーバーライドメソッド

でライン122上で見つけることができますIdは、私は成功せず、私のカスタムJSクラスに次を追加しようとしたラインで141

をhtml出力を変更したいです。もし誰かがこれをやる方法を説明できたら、大いに感謝します。

(function($) {  
$.widget("ui.tapestryFieldEventManager", { 
    showValidationMessage : function(message) { 
     var field = this.element; 
     var form = field.closest('form'); 

     this.options.validationError = true; 
     form.formEventManager("setValidationError", true); 

     field.addClass("t-error"); 

     this.getLabel() && this.getLabel().addClass("t-error"); 

     var icon = this.getIcon(); 

     if (icon) icon.show(); 
     alert("here"); 
     var id = field.attr('id')+"\\:errorpopup"; 
     if($("#"+id).size()==0) //if the errorpopup isn't on the page yet, we create it 
      field.after("<div id='"+field.attr('id')+":errorpopup' class='tjq-error-popup test'/>"); 
     Tapestry.ErrorPopup.show($("#"+id),"<span>"+message+"</span>"); 

    } 
}); 
})(jQuery); 

答えて

9

プロトタイプで上書きする必要があります。もちろん

var oldMethod = $.ui.tapestryFieldEventManager.prototype.showValidationMessage;  
$.ui.tapestryFieldEventManager.prototype.showValidationMessage = function (message) { 
    // do your stuff here 
    alert("worky"); 

    // apply old method 
    oldMethod.apply(this,arguments); 
}; 

、あなたの新しいメソッドが古いメソッドがしたすべてをしなければ、古い方法を適用するスキップできます。

+0

私はちょうど私かもしれませんが、私はこの正確なアプローチがjQuery UI 1.9.xで動作するとは思いません。 – jokeyrhyme

関連する問題