2010-08-02 92 views
2

我想要a用戶DateChooser以允許用戶在給定的月份和年份中選擇一個日期。我想以編程方式設置月份和年份,並且只允許用戶選擇日期/日期。DateChooser ..禁用年份和月份?

通過將minYear和maxYear設置爲我想要的年份,我可以很容易地做到這一點,但我沒有看到禁止用戶選擇不同月份的海峽前進方式?

+1

聽起來你不會需要DateChooser這個需求,只需填寫一個月的下拉列表,讓用戶選擇那些? – 2010-08-02 14:31:04

+0

@Jangwenyi,這可能更容易,謝謝。 – 2010-08-02 14:38:22

+0

你可以做到這一點,只要看看我的答案。隨時也可以upvote它:) – D3vtr0n 2010-10-08 19:03:27

回答

1

這裏是你如何禁用月份選擇箭頭......一個總CSS破解!

nextMonthUpSkin: ClassReference('mx.skins.Border'); 
nextMonthDisabledSkin: ClassReference('mx.skins.Border'); 
nextMonthDownSkin: ClassReference('mx.skins.Border'); 
nextMonthOverSkin: ClassReference('mx.skins.Border'); 
prevMonthUpSkin: ClassReference('mx.skins.Border'); 
prevMonthDisabledSkin: ClassReference('mx.skins.Border'); 
prevMonthDownSkin: ClassReference('mx.skins.Border'); 
prevMonthOverSkin: ClassReference('mx.skins.Border'); 

我很抱歉沒有看到這個問題在八月。但我最近(昨天)有同樣的問題,並發現這個解決方案......歡呼聲。

+0

+1是的,我想在你第一次發佈它時測試這個,但是被追蹤。我今天測試了它,它運行得很好。謝謝。 – 2010-10-08 20:05:48

+0

甜美的傢伙,很高興它的工作!我不喜歡這樣做,但我有這些壞男孩中的6個,完整的延長和彩色編碼日等等。祝你好運! – D3vtr0n 2010-10-08 22:00:51

1

您也可以使用的selectableRange屬性和設置具有rangeStartrangeEnd的適當。例如,只允許用戶從2010年8月1日挑來2010年8月15日:

selectableRange="{{rangeStart:new Date(2010,7,1), rangeEnd:new Date(2010,7,15)}}"

但是,請注意它仍然顯示導航一個月箭頭(雖然他們禁用)。我不確定是否有簡單的方法來隱藏這些內容。

+0

^是的,有一個容易隱藏這些。看看我的答案。 – D3vtr0n 2010-09-23 19:54:57

1

MX:DateChooser開箱只允許通過公共財產禁用年份導航的「yearNavigationEnabled」

如果你想關閉月份導航也一樣,你必須從標準DateChooser組件擴展和實現「monthNavigationEnabled 「功能類似於現有的」yearNavigationEnabled「

+0

正確解決問題,是的,你可以延長。但爲什麼要花幾天,幾周,幾個月重新發明輪子?使用我發佈的CSS hack。 – D3vtr0n 2010-09-23 19:56:54

2

正如JabbyPanda所述,您可以擴展DateChooser控件。通過少量的額外工作,您可以獲得理想且更可重用的實現,但我們堅持簡單。因此,您只需要刪除fwdMonthButtonbackMonthButton,或者通過將visible屬性設置爲false來隱藏它們。例如:

import mx.controls.DateChooser; 
import mx.core.mx_internal; 
use namespace mx_internal; 

public class MyDateChooser extends DateChooser 
{ 
    override protected function createChildren():void { 
     super.createChildren(); 
     // Remove them: 
     this.removeChild(this.mx_internal::fwdMonthButton); 
     this.removeChild(this.mx_internal::backMonthButton); 
     // Or just hide them: 
     //this.mx_internal::fwdMonthButton.visible = false; 
     //this.mx_internal::backMonthButton.visible = false;  
    } 
}