2011-11-04 32 views
1

所有的問題是,我想在客戶端禁用並啓用rich:calendar(例如使用javascript函數)。如何使用JQuery或JavaScript禁用富歷(客戶端)

XHTML元素:

<rich:calendar id="calendar" ... />   
<h:selectBooleanCheckbox id="checkbox" onclick="change('checkbox', 'calendar')" ... /> 

JS功能:

function change(checkbox, calendar){ 
    if(jQuery('#'+checkbox).is(':checked')){ 
     // Enable calendar 
     jQuery('#'+calendar).removeAttr('disabled'); 
    } 
    else{ 
     // Disable calendar 
     jQuery('#'+calendar).attr('disabled',true); 
    } 
} 

jQuery('#'+checkbox)返回一個輸入input#checkboxjQuery('#'+calendar)返回表table#calendar.rich-calendar-exterior而不是組件來禁用。

如何使用JQuery(或javascript)禁用輸入和豐富日曆的圖標?

編輯<rich:calendar id="calendar" />生成HTML:

<span id="calendarPopup"> 
    <input type="text" class="rich-calendar-input" id="calendar" name="calendar" 
    style="vertical-align: middle; width: 130px"> 
    <img alt="" class="rich-calendar-button" id="calendarPopupButton" 
    style="vertical-align: middle" src="/project/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.CalendarIcon/DATB/eAE7fv4Kw6znAA4mA-w_.jsf"> 
    <input type="hidden" autocomplete="off" id="calendarInputCurrentDate" name="calendarInputCurrentDate" style="display: none" value="11/2011"> 
</span> 
+2

如果你可以張貼傳遞給瀏覽器(通過查看源文件)的HTML那麼人們不熟悉的RichFaces可以幫助你。 –

+0

@JamesMontagne你可以看到我的編輯和我的答案。我的回答並不完全是預期的實施,所以我仍然在尋找一個好的答案。謝謝 –

回答

1

只使用jQuery的implmentation我無法找到一個解決辦法,所以我選擇複選框值和同布爾殘疾人日曆屬性綁定:

<rich:calendar id="calendar" disabled="#{!checkboxValue}" />   
<h:selectBooleanCheckbox id="checkbox" value="#{checkboxValue}"> 
    <a4j:support event="onclick" reRender="calendar"></a4j:support> 
</h:selectBooleanCheckbox> 

有一個Ajax(我不想)沒有任何人有沒有Ajax的另一個解決方案?沒有其他解決方案,我會選擇這一個作爲接受的答案...

0

我知道這篇文章是非常古老的,但儘管如此,我會對它作出貢獻,因爲我只是有同樣的疑問。

我能夠做到這一點JQuery。看看生成的HTML輸出,我可以看到它創建了幾個組件。這裏是我的<rich:calendar>

<rich:calendar id="cal" value="#{myManagedBean.date}" > 

正如你所看到的ID是cal。但它的內部<input>的ID實際上是calInputDate,所以這是我通過JQuery禁用,像這樣的一個:

$('#mainForm\\:calInputDate').prop('disabled', true); 

,只是使用相同的邏輯來再次啓用它。

$('#mainForm\\:calInputDate').prop('disabled', false); 

它的工作原理:-)

+0

這不會禁用日曆按鈕,但只有輸入字段 – Wiebke

相關問題