【问题标题】:DateChooser.. disable year and month?DateChooser .. 禁用年份和月份?
【发布时间】:2010-08-02 14:26:53
【问题描述】:

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

我可以通过将 minYear 和 maxYear 设置为我想要的任何年份来轻松完成这一年,但我没有看到不允许用户选择不同月份的严格方法?

【问题讨论】:

  • 听起来您不需要 DateChooser 从这个要求中,只需填充一个月中日期的下拉列表并让用户选择这些?
  • @Jangwenyi,这可能更容易,谢谢。
  • 可以的,看我的回答。也请随意投票:)

标签: apache-flex flash actionscript-3 flex3 datechooser


【解决方案1】:

这是禁用月份选择箭头的方法...一个完整的 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 是的,我打算在你第一次发布它时测试一下,但被跟踪了。我今天测试了这个,效果很好。谢谢。
  • 亲爱的老兄,很高兴它成功了!我不高兴这样做,但我有 6 个这样的坏男孩,完全延长和颜色编码的日子,等等。祝你好运!
【解决方案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;    
    }
}

【讨论】:

    【解决方案3】:

    您还可以使用 selectableRange 属性并适当地设置 rangeStartrangeEnd。仅允许用户选择 2010 年 8 月 1 日至 2010 年 8 月 15 日的示例:

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

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

    【讨论】:

    • ^ 是的,隐藏这些很容易。看看我的回答。
    【解决方案4】:

    开箱即用的mx:DateChooser 只允许通过公共属性“yearNavigationEnabled”禁用年份导航

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

    【讨论】:

    • 要正确解决问题,是的,您可以扩展。但为什么要花几天、几周、几个月的时间重新发明轮子呢?使用我发布的 CSS hack。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2016-07-31
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2011-03-21
    • 2016-06-25
    相关资源
    最近更新 更多