2014-02-23 78 views
0

我注意到禁用內聯p:calendar實際上隱藏了它。如何禁用內聯p:日曆(primefaces)

我一直期待禁用的p:日曆只是一個日曆,但只讀,就像所有其他典型的JSF組件一樣。

如果我想要一個隱藏的p:日曆,我會使用呈現的屬性。

有沒有什麼辦法可以禁用內聯p:日曆而不隱藏它? (正好擋住鼠標和鍵盤吧)

Primefaces 4.

回答

1

我用readonly=true屬性,但它並沒有爲我工作。

還有一個屬性是readonlyInput=true,但是這不是內聯日曆。

因此,最後我最終通過JQuery解除了連接到p:calendar組件的<TD>的所有事件。

我不知道它是否是一個可行的解決方案(可能有其他的選擇),但這個腳本工作得很好。

$(document).ready(
    function makeCalendarReadOnly(){ 
     $(".ui-datepicker-inline td").unbind(); 
    } 
); 
2

畢竟結果是一個跨度,所以你可以使用普通的jQuery來調整樣式。

$('.disabledCalendar').children().fadeTo('slow', .7); 
$('.disabledCalendar').append('<div style="position: absolute;top:0;left:0;width: 100%;height:100%;z-index:2;opacity:0.4;filter: alpha(opacity = 50)"></div>'); 
$(".ui-datepicker-inline td").unbind(); 

和階級分配到日曆:

<p:calendar styleClass="disabledCalendar" mode="inline" /> 

注:這可能會非常棘手,如果有人在客戶端的造型出場,並取下面膜。他們將能夠改變這個值,因爲這個解決方案顯然不會在服務器端反映出來。我會在服務器端進行一些驗證,該值沒有改變。

編輯: 你也可以用基肖爾P答案結合我的解決方案和取消綁定事件(我已編輯了jQuery的代碼)。 這樣它會更安全。

github上可以找到一個小例子。和一個online Demo

希望這會有所幫助。

+0

Works fine..Chokran :) –