0

我们有一个带有 Editable = true 的 Datefield 组件

<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" />

日历有我们想要的一切(只能在 2010 年 1 月 1 日之后选择有效日期)。现在的问题是,如果用户输入 (Editable = true) 无效日期或任何日期 < 2010 年 1 月 1 日,我如何验证该日期并显示该日期无效的警报。请对此提供任何帮助。

谢谢

哈里什

4

4 回答 4

1

DateField 组件有一个您可以收听的“dataChange”事件。因此,您可以将处理程序附加到该事件并根据需要进行验证。

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

于 2011-02-15T20:34:58.163 回答
1

The DateField component has a valueCommit event that you can listen to. So you can attach a handler to that event and do the validation as required.

于 2012-05-28T08:07:13.013 回答
0

也许你可以在看到所有这些很好的例子之后尝试不同的方法

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

于 2013-08-01T15:46:17.950 回答
0

您可以通过以下方式进行操作。

  • 如果用户指定未指定任何内容(或空格),则将其视为用户想要清除所选日期。
  • 如果用户指定的日期无效,则返回到今天的日期。您还可以通过设置 DateField 组件的 errorString 属性来更改此逻辑以提醒用户有关无效日期的信息。
  • 对于范围开始日期之前的日期,它回退到范围开始日期。
  • 对于范围结束日期之后的日期,它回退到范围结束日期。

<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/]"/>

于 2014-11-20T14:30:23.570 回答