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 日以降のみです)。問題は、ユーザーが (編集可能 = true) 無効な日付または 2010 年 1 月 1 日より前の日付を入力した場合、それを検証して、日付が無効であるというアラートを表示するにはどうすればよいかということです。これについて何か助けていただければ幸いです。

ありがとう

ハリッシュ

4

4 に答える 4

1

DateFieldコンポーネントには、リッスンvalueCommitできるイベントがあります。そのため、そのイベントにハンドラーをアタッチし、必要に応じて検証を行うことができます。

于 2012-05-28T08:07:13.013 に答える
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 に答える
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 に答える