【问题标题】:Disable Date in DatePicker [Extjs]在 DatePicker [Extjs] 中禁用日期
【发布时间】:2015-05-28 20:29:17
【问题描述】:

我想从每月的 2 号到每月的最后一天禁用。

即仅启用每月的第一天。 本月的第一天也应该禁用。 我试过了

format: 'd/m/Y',
disabledDates: ['02/..', '31/..']

但它仅在每个月的 2 日和 31 日禁用。

虽然我搜索更多

使用

disabledDates : ['^01']

它可以帮助我禁用每个月的第一天...但是我需要相反。

请帮助 :: extjs 新手

【问题讨论】:

    标签: extjs extjs4 extjs4.1 extjs3


    【解决方案1】:

    不漂亮,但代码sn-p在下面。

    请注意:

    • 这仅涉及“我想从每月 2 日到每月最后一天禁用”的第一点
    • 不禁用“本月的第一天”,因为我不确定如何实现。

    Ext.create('Ext.form.Panel', {
        renderTo: Ext.getBody(),
        width: 300,
        bodyPadding: 10,
        title: 'Dates',
        items: [{
            xtype: 'datefield',
            anchor: '100%',
            fieldLabel: 'From',
            name: 'from_date',
            disabledDates: ['../02/..',
                            '../03/..',
                            '../04/..',
                            '../05/..',
                            '../06/..',
                            '../07/..',
                            '../08/..',
                            '../09/..',
                            '../10/..',
                            '../11/..',
                            '../12/..',
                            '../13/..',
                            '../14/..',
                            '../15/..',
                            '../16/..',
                            '../17/..',
                            '../18/..',
                            '../19/..',
                            '../20/..',
                            '../21/..',
                            '../22/..',
                            '../23/..',
                            '../24/..',
                            '../25/..',
                            '../26/..',
                            '../27/..',
                            '../28/..',
                            '../29/..',
                            '../30/..',
                            '../31/..'],
            maxValue: new Date()  // limited to the current date or prior
        }]
    });
    <link href="http://cdn.sencha.com/ext/gpl/4.2.0/resources/css/ext-all.css" rel="stylesheet"/>
    <script src="//cdn.sencha.io/ext-4.2.0-gpl/ext-all.js"></script>

    【讨论】:

      【解决方案2】:

      尝试在您的视图中绑定 disabledDates 并在您的控制器示例上使用 setDisabledDates :

      你的项目

      { 
       xtype: 'datefield', 
       reference: 'date', 
       altFormats: 'd/m/Y', 
       bind:{ 
         disabledDates :'{dateDisabled}' 
       } 
      }
      

      你的控制器

      dateDisabled: function () {
       // your stuff
       return // array with dates to desactivate
      }
      

      【讨论】:

        【解决方案3】:

        '02/..' 表示:“禁用所有包含 02/ 后跟任意两个字符的日期。”您确定 08/02/2015 没有被此禁用吗?我的猜测是,整个 2 月都被禁用了。

        虽然您可以创建一个正则表达式来表示“除了第一天之外的所有日子”,但我不知道如何使用这个怪物:

        disabledDates: ['^02', '^03', '^04', '^05', '^06', '^07', '^08', '^09', '^1', '^2', '^3', '01/03/2015']
        

        但是,为了可用性,我建议使用不同的 UX 元素,因为您禁用了 >90% 的日期。我想两个组合框,一个用于月份,一个用于年份,会更合适。

        【讨论】:

        • “我想两个组合框,一个用于月份,一个用于年份,会更合适。”是的,它会更合适……但我需要一整年……而不是 10-15 年。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-19
        • 2016-02-13
        • 2013-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多