2012-02-16 30 views

回答

2

參見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」]。

+0

這讓我在正確的軌道上,但我想不通的正則表達式允許所有15年代和month'的所有'最後一天。有任何想法嗎? – cbmeeks 2012-02-16 21:02:00

+0

這實際上很難,因此我希望有一個類似'allowedDates'選項。禁用天1-14和16-27很容易,如果笨拙,只要列出它們即可。麻煩在於這個月的最後一天。 – Mchl 2012-02-16 21:25:00

+0

您可以確定從第二個月的第一天減去1的月份的最後一天。 – Thevs 2012-02-17 17:15:57

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] 
}); 
相關問題