我在ExtJS4中有一個DatePicker。我只想讓每個月都有兩個日期。第15天和最後一天(30/31/28/29取決於月/年)如何限制ExtJS DatePicker中的兩個日期?
如何禁用選取器中的每一天但允許這兩個日期?
我在ExtJS4中有一個DatePicker。我只想讓每個月都有兩個日期。第15天和最後一天(30/31/28/29取決於月/年)如何限制ExtJS DatePicker中的兩個日期?
如何禁用選取器中的每一天但允許這兩個日期?
參見Ext.form.field.Date
disabledDates
配置選項從API文檔:
disabledDates:字符串[] 「日期」 的數組來禁用,爲字符串。 這些字符串將用於構建動態正則表達式,因此它們非常強大。一些例子:
// 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」]。
//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]
});
這讓我在正確的軌道上,但我想不通的正則表達式允許所有15年代和month'的所有'最後一天。有任何想法嗎? – cbmeeks 2012-02-16 21:02:00
這實際上很難,因此我希望有一個類似'allowedDates'選項。禁用天1-14和16-27很容易,如果笨拙,只要列出它們即可。麻煩在於這個月的最後一天。 – Mchl 2012-02-16 21:25:00
您可以確定從第二個月的第一天減去1的月份的最後一天。 – Thevs 2012-02-17 17:15:57