我注意到禁用內聯p:calendar實際上隱藏了它。如何禁用內聯p:日曆(primefaces)
我一直期待禁用的p:日曆只是一個日曆,但只讀,就像所有其他典型的JSF組件一樣。
如果我想要一個隱藏的p:日曆,我會使用呈現的屬性。
有沒有什麼辦法可以禁用內聯p:日曆而不隱藏它? (正好擋住鼠標和鍵盤吧)
Primefaces 4.
我注意到禁用內聯p:calendar實際上隱藏了它。如何禁用內聯p:日曆(primefaces)
我一直期待禁用的p:日曆只是一個日曆,但只讀,就像所有其他典型的JSF組件一樣。
如果我想要一個隱藏的p:日曆,我會使用呈現的屬性。
有沒有什麼辦法可以禁用內聯p:日曆而不隱藏它? (正好擋住鼠標和鍵盤吧)
Primefaces 4.
我用readonly=true
屬性,但它並沒有爲我工作。
還有一個屬性是readonlyInput=true
,但是這不是內聯日曆。
因此,最後我最終通過JQuery解除了連接到p:calendar
組件的<TD>
的所有事件。
我不知道它是否是一個可行的解決方案(可能有其他的選擇),但這個腳本工作得很好。
$(document).ready(
function makeCalendarReadOnly(){
$(".ui-datepicker-inline td").unbind();
}
);
畢竟結果是一個跨度,所以你可以使用普通的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。
希望這會有所幫助。
Works fine..Chokran :) –