2つの日付を追加するフォームがあります
- 開始日
- 終了日
選択した開始日が常に終了日(実際には有効期限)よりも短いことを検証する方法を知りたいです。
2つの日付を追加するフォームがあります
選択した開始日が常に終了日(実際には有効期限)よりも短いことを検証する方法を知りたいです。
日付を比較するためにこのようなことを行うことができます。
trace(validateDate(new Date(2008, 5, 1), new Date(2008, 6, 1)));
protected function validateDate(date1:Date, date2:Date):Boolean
{
return (date1.time < date2.time);
}
あなたはこのようなものに見えます。この関数を試してください:
public function compare (Start_date: Date, End_Date : Date) : Number
{
var Start_date1 : Number = Start_date.getTime ();
var End_Date1 : Number = End_Date.getTime ();
if (Start_date1 > End_Date1)
{
result = 0;
}
else
{
result = 1;
}
return result;
}
2つのdataFieldを直接使用して、開始dateFieldよりも小さい終了dateField日付を無効にすることができます
あなたはこのようにすることができます
<mx:DateField id="stDate"/>
<mx:DateField id="endDate" selectableRange="{{rangeStart: stDate.selectedDate}}"/>
上記から、終了日と開始日を比較する必要はありません...開始日より前の日付は終了日フィールドで有効にならないためです。
小さなサンプル
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.utils.ObjectUtil;
import mx.events.CalendarLayoutChangeEvent;
private function compareDate():void {
var fromDateFormat:String = DateField.dateToString(new Date(fromDates.selectedDate), "YYYY/MM/DD");
var toDateFormat:String = DateField.dateToString(new Date(toDates.selectedDate), "YYYY/MM/DD");
var todayDateStr:String = DateField.dateToString(new Date(), "YYYY/MM/DD");
var fromDate:Date = DateField.stringToDate(fromDateFormat, "YYYY/MM/DD");
var toDate:Date = DateField.stringToDate(toDateFormat, "YYYY/MM/DD");
var todayDate:Date = DateField.stringToDate(todayDateStr, "YYYY/MM/DD");
if(ObjectUtil.dateCompare(todayDate , fromDate) >= 0 && ObjectUtil.dateCompare(todayDate , toDate) <=0){
Alert.show("Valid");
}else{
Alert.show("InValid");
}
}
]]>
</mx:Script>
<mx:DateField id="fromDates"/>
<mx:DateField id="toDates"/>
<mx:Button id="checkValidity" click="compareDate()"/>
</mx:Application>
また
検証については、以下のリンクを確認してください
http://www.iamboredsoiblog.eu/flexfiles/start_end_date_check/srcview/index.html