Flex DateField проверяет дату с Editable = True - PullRequest
0 голосов
/ 15 февраля 2011

У нас есть компонент Datefield с Editable = true

<mx:DateField id="startDate"  
                                  width="120"
                                  editable="true"
                                  formatString="MM/DD/YYYY"
                                  selectableRange="{{rangeStart : new Date(2010,0,1), rangeEnd : new Date()}}"
                                  showToday="true"
                                  labelFunction="formatDate" 
                                  restrict="[0-9] '\/'" change="startDate_clickHandler(event)"
                                  yearNavigationEnabled="true" 
                                  text="{}" tabIndex="15" />

В календаре есть все, что мы хотим (возможность выбрать действительную дату только после 01.01.2010). Теперь проблема в том, что если пользователь вводит (Editable = true) недопустимую дату или любую дату <01.01.2010, как я могу проверить это и показать предупреждение о том, что эта дата недействительна. Пожалуйста, любая помощь по этому вопросу будет принята. </p>

Спасибо

Хариш

Ответы [ 4 ]

1 голос
/ 28 мая 2012

Компонент DateField имеет событие valueCommit, которое вы можете прослушивать. Таким образом, вы можете прикрепить обработчик к этому событию и выполнить проверку в соответствии с требованиями.

1 голос
/ 15 февраля 2011

Компонент DateField имеет событие «dataChange», которое вы можете прослушивать. Таким образом, вы можете прикрепить обработчик к этому событию и выполнить проверку в соответствии с требованиями.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/DateField.html#event:dataChange

0 голосов
/ 20 ноября 2014

Вы можете сделать это следующим образом.

  • Если пользователь указывает, что ничего не указывает (или пробелы), он обрабатывает это так, как если бы пользователь хотел очистить выбранную дату.
  • Если пользователь указывает недопустимую дату, он возвращается к сегодняшней дате. Вы также можете изменить эту логику, чтобы предупредить пользователя о недопустимой дате, установив poperty errorString компонента DateField.
  • Для даты, предшествующей дате начала диапазона, она возвращается к дате начала диапазона.
  • Для даты после даты окончания диапазона она возвращается к дате окончания диапазона.

</p> <pre><code><fx:Script> <![CDATA[ import mx.controls.DateField; import mx.utils.StringUtil; private function parseStartDate(valueString:String, inputFormat:String):Date { if (StringUtil.trim(valueString) == "") return null; var date:Date = DateField.stringToDate(valueString, inputFormat); if (date == null) date = new Date(startDate.selectableRange.rangeEnd.time); else if (date.time < startDate.selectableRange.rangeStart.time) date = new Date(startDate.selectableRange.rangeStart.time); else if (date.time > startDate.selectableRange.rangeEnd.time) date = new Date(startDate.selectableRange.rangeEnd.time); return date; } ]]> </fx:Script> <mx:DateField id="startDate" width="120" selectableRange="{{rangeStart : new Date(2010,0,1), rangeEnd : new Date()}}" showToday="true" yearNavigationEnabled="true" parseFunction="parseStartDate" editable="true" formatString="MM/DD/YYYY" restrict="[0-9/]"/>

0 голосов
/ 01 августа 2013

Может быть, вы могли бы попробовать другой подход, увидев все эти замечательные примеры

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7d9b.html#WS2db454920e96a9e51e63e3d11c0bf69084-7db3

...