2009-09-16 50 views

回答

1

的雅虎Astra TimeInput和TimeStepper是有用的。

http://developer.yahoo.com/flash/astra-flex/timeinput/

http://developer.yahoo.com/flash/astra-flex/timestepper/

然而,显然存在问题与Flex 4 SDK使用的时候,似乎雅虎目前还没有计划更新其Astra组件。

你可能想看看这个链接,我想时间投入将是一个原生的Flex SDK组件一个很好的候选人,与Flex 4中的 https://github.com/joshtynjala/astra-flex

工作的版本。

0

试试这个下面的代码:这将是输入HH有用:MM 12小时制,没有AM/PM

MXML代码:

<Timepicker maxChars="5" restrict="0-9" /> 

ActionScript代码:

package 
{ 
import flash.events.KeyboardEvent; 

import mx.controls.TextInput; 

public class Timepicker extends TextInput 
{ 
    public function Timepicker() 
    { 
    } 

    override protected function keyUpHandler(event:KeyboardEvent):void 
    { 
     super.keyUpHandler(event); 

     if (text.length == 0) 
     { 
      return; 
     } 
     var keyDel:Boolean=false; 
     if (event.charCode == 8 || event.charCode == 46) 
      keyDel=true; 
     var numberString:String=text; 
     if (keyDel) 
      text=numberString; 

     if (numberString.length > 0 && !keyDel) 
     { 
      if (numberString.length == 2 && numberString.indexOf(":") == -1) 
      { 
       text=numberString; 
       textField.appendText(":"); 
      } 
      else if (numberString.length >= 4 && Number(numberString.charAt(3)) > 5) 
      { 
       text=numberString.substr(0, 3) 
      } 
      else if (numberString.length == 3 && numberString.charAt(2) != ":") 
      { 
       if (Number(numberString.charAt(2)) <= 5) 
       { 
        var fourthDigit:String=numberString.charAt(2); 
        super.textField.text=""; 
        super.textField.appendText(numberString.substring(0, 2) + ":" + fourthDigit); 
       } 
       else 
       { 
        super.textField.text=""; 
        super.textField.appendText(numberString.substring(0, 2) + ":"); 
       } 
      } 
      textField.setSelection(textField.length, textField.length); 

     } 
    } 

    override protected function keyDownHandler(event:KeyboardEvent):void 
    { 
     super.keyDownHandler(event); 
     var keyDel:Boolean=false; 
     if (event.charCode == 8 || event.charCode == 46) 
      keyDel=true; 

     super.text=text; 
     if (super.text.length == 0) 
     { 
      var inputVal:String=String.fromCharCode(event.charCode); 
      if (Number(inputVal) > 1) 
      { 
       super.textField.appendText("0" + inputVal + ":"); 
      } 
     } 
     super.textField.setSelection(super.textField.length, super.textField.length); 
    } 

} 

}

相关问题