3

p:inplace アイテムを切り替えるボタンを取得しようとしています。トグル機能を使用しようとしていますが、うまくいきません。

<p:inplace widgetVar="X" >
  <p:inputText  value="test"></p:inputText>
 </p:inplace>

<p:button value="toggle" onclick="X.toggle()" />

これを行うと、ブラウザのコンソールに次のメッセージが表示されます

Uncaught TypeError: 未定義の primefaces.js.jsf:18 PrimeFaces.widget.Inplace.PrimeFaces.widget.BaseWidget.extend.toggle primefaces.js.jsf:18 onclick のメソッド 'fadeOut' を呼び出せません

4

5 に答える 5

1

デフォルトのエフェクトにバグがあるようです。エフェクトを他の標準エフェクトの 1 つに変更して、うまくいくかどうかを確認します。

<p:inplace widgetVar="X" effect="clip">
  <p:inputText  value="test"></p:inputText>
</p:inplace>

ユーザーマニュアルで定義されている使用可能なエフェクト:

• blind
• clip
• drop
• explode
• fold
• puff
• slide
• scale
• bounce
• highlight
• pulsate
• shake
• size
• transfer
于 2012-09-11T15:35:42.277 に答える
0

トグル javascript 関数が奇妙に見えます。3 つの効果値のみをサポートします。また、表示する要素と非表示にする要素の 2 つの最初の引数も必要です。使い方がわかりません。

PrimeFaces.widget.Inplace.prototype.toggle = function(elToShow, elToHide, callback) {
    var _self = this;
    if(this.cfg.effect == 'fade') {
        elToHide.fadeOut(this.cfg.effectSpeed,
                function(){
            elToShow.fadeIn(_self.cfg.effectSpeed);

            if(callback)
                callback.call(_self);
        });
    }
    else if(this.cfg.effect == 'slide') {
        elToHide.slideUp(this.cfg.effectSpeed,
                function(){
            elToShow.slideDown(_self.cfg.effectSpeed);
        });
    }
    else if(this.cfg.effect == 'none') {
        elToHide.hide();
        elToShow.show();
    }
}

少なくとも1つの回避策をお勧めします(タグの生成されたマークアップの内部IDを使用するため、かなりハックですが、私にとってはうまくいきました(PrimeFaces 3.5):

<p:inplace event="none" id="xId">
    <h:inputText value="test"/>
</p:inplace>
<p:commandButton value="Toggle" 
    oncomplete="$('#xId_content,#xId_display').toggle()" />
于 2013-03-26T12:10:08.727 に答える