2012-06-15 30 views
5

我想覆蓋jQuery小部件中的方法。該方法可以在管線122 https://github.com/got5/tapestry5-jquery/blob/master/src/main/resources/org/got5/tapestry5/jquery/validation.js覆蓋jQuery小部件裏面的方法

ID來找到想改變上線141

我試着添加以下到我的自定義JS類沒有成功的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