2012-06-15 22 views
3

我想獲得一個按鈕,將切換p:inplace項目。我試圖使用切換功能,但沒有任何運氣。p:按鈕切換就地輸入

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

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

當我這樣做,我得到我的瀏覽器的控制檯

遺漏的類型錯誤以下消息:無法調用未定義primefaces.js.jsf的方法「淡出」:18個 PrimeFaces.widget.Inplace.PrimeFaces .widget.BaseWidget.extend.toggle primefaces.js.jsf:18 onclick

回答

1

它看起來像有一個缺省效果的錯誤。將效果改爲其他標準效果之一,看看它是否會讓你走。

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

如在用戶手冊中定義的可用的影響:javascript函數看起來奇怪

• blind 
• clip 
• drop 
• explode 
• fold 
• puff 
• slide 
• scale 
• bounce 
• highlight 
• pulsate 
• shake 
• size 
• transfer 
+0

這並沒有做到這一點。我已經更新到primefaces 3.4.1,但仍然存在相同的問題。 – jhaley

0

切換。它只支持3個效果值。它還需要兩個第一個參數 - 要顯示的元素和要隱藏的元素。不知道如何使用它。

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

我可以推薦至少一個解決辦法(漂亮的hackish,因爲它使用標籤的生成標記的內部IDS但對我來說(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()" /> 
0

嘗試使用這個,對我的作品:

<p:commandLink onclick="PF('X').toggle()" title="Toggle"></p:commandLink> 

它會觸發你的widgetvar你。

+0

它會做更多的...它會提交一個帖子到服務器是不是你想要的afaics。這裏根本不需要使用commandLink。和一個按鈕!=鏈接。更好地研究PF文檔,瞭解如何使用(命令)按鈕並僅執行客戶端JavaScript。 – Kukeltje

0

PrimeFace的最新版本S(從4及以上IIRC)必須添加type="button"p:commandButton的選擇,它再不會調用服務器只是客戶端的JavaScript

-1

很簡單的東西:而不是toggle()你必須使用show(),RESP 。 hide()功能,在你的情況下:

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

爲什麼? toggle()仍然是一個有效的客戶端API調用(請參閱6.1文檔的第276頁) – Kukeltje

+0

是的,但正如「jhaley」正確地要求:「它只支持3個效果值。 –

+0

但是,您不要使用任何其他效果......因此,覆蓋效果就是要走的路。 – Kukeltje