【问题标题】:How can I limit two dates in an ExtJS DatePicker?如何在 ExtJS DatePicker 中限制两个日期?
【发布时间】:2012-03-08 07:02:30
【问题描述】:

我在 ExtJS4 中有一个 DatePicker。我只想允许每个月有两个日期。第 15 天和最后一天(30/31/28/29 取决于月/年)

如何在选择器中禁用每一天但允许这两个日期?

【问题讨论】:

    标签: regex extjs datepicker extjs4


    【解决方案1】:

    请参阅disabledDatesExt.form.field.Date 的配置选项

    来自 API 文档:

    disabledDates : String[] 要禁用的“日期”数组,作为字符串。 这些字符串将用于构建动态正则表达式,因此 他们非常强大。一些例子:

    // disable these exact dates:
    disabledDates: ["03/08/2003", "09/16/2003"]
    // disable these days for every year:
    disabledDates: ["03/08", "09/16"]
    // only match the beginning (useful if you are using short years):
    disabledDates: ["^03/08"]
    // disable every day in March 2006:
    disabledDates: ["03/../2006"]
    // disable every day in every March:
    disabledDates: ["^03"]
    

    请注意,包含在数组中的日期格式应该完全 匹配格式配置。为了支持正则表达式,如果 您正在使用具有“。”的日期格式。在其中,您将不得不 限制日期时转义点。例如:["03\.08\.03"]。

    【讨论】:

    • 这让我走上了正确的道路,但我无法弄清楚允许所有 15 日和所有 last day of month 的正则表达式。有什么想法吗?
    • 这实际上是很难的标准,这让我希望有一个类似的allowedDates 选项。禁用第 1-14 天和第 16-27 天很容易,如果笨拙的话,只需列出它们即可。问题在于月份的最后一天。
    • 您可以确定当月的最后一天从第二个月的第一天减去 1。
    • @Thevs:你有正则表达式吗? ;)
    • 你不能预处理这个吗? ;)
    【解决方案2】:
    //Get the last date of the month. If in Feb 2012, lastDate is 29.
    var lastDate = Ext.Date.getDaysInMonth(new Date());
    //15th 
    var middleDate = 15;
    
    //Construct regular expression
    var disabledArray=[];
    var today = Ext.Date.format(new Date(), 'm/d/Y');
    var dateReg = /(\d{2}\/)\d{2}(\/\d{4})/;
    disabledArray.push(today.replace(dateReg, '$1' + middleDate + '$2'));
    disabledArray.push(today.replace(dateReg, '$1' + lastDate + '$2'));
    
    //Something like "^(?!02/15/2012|02/29/2012).*$" including the two days allowed.
    var disabledReg = '^(?!' + disabledArray.join('|') + ').*$';
    
    //Apply the regular expression to date field
    var dateField = new Ext.form.field.Date({
        format: 'm/d/Y',
        disabledDates: [disabledReg]
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      相关资源
      最近更新 更多