5

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

141行目のHTML出力を変更したい

カスタムjsクラスに以下を追加しようとしましたが成功しませんでした。誰かがこれを行う方法を説明できれば、idはそれを大いに感謝します。

(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);
4

1 に答える 1

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);
};

もちろん、新しいメソッドが古いメソッドのすべてを実行する場合は、古いメソッドの適用をスキップできます。

于 2012-06-15T15:24:46.303 に答える