DateChooser ..禁用年月?

时间:2010-08-02 14:26:53

标签: flex flash actionscript-3 flex3 datechooser

我希望用户DateChooser允许用户选择给定月份和年份的日期。我想以编程方式设置月份和年份,只允许用户选择日期/日期。

我可以通过将minYear和maxYear设置为我想要的任何年份来轻松完成这一年,但是我没有看到禁止用户选择不同月份的直接方式吗?

4 个答案:

答案 0 :(得分:2)

以下是禁用月份选择箭头的方法......一个完整的CSS hack !!

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');   

我为8月份没有看到这个问题而道歉。但我最近(昨天)遇到了同样的问题并找到了解决方案......干杯。

答案 1 :(得分: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;    
    }
}

答案 2 :(得分:1)

您还可以使用 selectableRange 属性并相应地设置 rangeStart rangeEnd 。仅允许用户从2010年8月1日到2010年8月15日选择的示例:

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

但是,请注意它仍会显示月份导航箭头(尽管它们已被禁用)。我不确定是否有一种简单的方法来隐藏它们。

答案 3 :(得分:1)

mx:开箱即用的DateChooser只允许公共财产禁用年份导航“yearNavigationEnabled”

如果您也想禁用月导航,则必须从标准DateChooser组件扩展并实现类似于现有“yearNavigationEnabled”的“monthNavigationEnabled”功能