Actionscript 3 as3文本字段占位符

Actionscript 3 as3文本字段占位符,actionscript-3,Actionscript 3,我有一个关于as3上textfield占位符的快速问题 var placeholder_text:String = "Search"; myTextField.addEventListener(FocusEvent.FOCUS_IN, focusIn); myTextField.addEventListener(FocusEvent.FOCUS_OUT, focusOut); // fire when click to edit function focusIn(event:Event):

我有一个关于as3上textfield占位符的快速问题

var placeholder_text:String = "Search";

myTextField.addEventListener(FocusEvent.FOCUS_IN,  focusIn);
myTextField.addEventListener(FocusEvent.FOCUS_OUT, focusOut);

// fire when click to edit
function focusIn(event:Event):void
{
    if(myTextField.text == placeholder_text)
    {
        myTextField.text = ""; 
    }
 }

// fire when you clicked out
function focusOut(event:Event):void
{

    if(myTextField.text == "")
    {
        myTextField.text = placeholder_text; 
    }
}
所有现代浏览器或移动应用程序都支持文本输入字段的占位符。单击后,焦点将移到文本的开头,而占位符将保持不变,直到您开始键入为止

var placeholder_text:String = "Search";

myTextField.addEventListener(FocusEvent.FOCUS_IN,  focusIn);
myTextField.addEventListener(FocusEvent.FOCUS_OUT, focusOut);

// fire when click to edit
function focusIn(event:Event):void
{
    if(myTextField.text == placeholder_text)
    {
        myTextField.text = ""; 
    }
 }

// fire when you clicked out
function focusOut(event:Event):void
{

    if(myTextField.text == "")
    {
        myTextField.text = placeholder_text; 
    }
}
只是想知道这是否可以在as3上存档

var placeholder_text:String = "Search";

myTextField.addEventListener(FocusEvent.FOCUS_IN,  focusIn);
myTextField.addEventListener(FocusEvent.FOCUS_OUT, focusOut);

// fire when click to edit
function focusIn(event:Event):void
{
    if(myTextField.text == placeholder_text)
    {
        myTextField.text = ""; 
    }
 }

// fire when you clicked out
function focusOut(event:Event):void
{

    if(myTextField.text == "")
    {
        myTextField.text = placeholder_text; 
    }
}
干杯
比尔

当然可以,但您需要手动处理该文本字段。常规例程是这样的:拥有一个TextField子类,该子类将拥有一个包含占位符文本的字段

var placeholder_text:String = "Search";

myTextField.addEventListener(FocusEvent.FOCUS_IN,  focusIn);
myTextField.addEventListener(FocusEvent.FOCUS_OUT, focusOut);

// fire when click to edit
function focusIn(event:Event):void
{
    if(myTextField.text == placeholder_text)
    {
        myTextField.text = ""; 
    }
 }

// fire when you clicked out
function focusOut(event:Event):void
{

    if(myTextField.text == "")
    {
        myTextField.text = placeholder_text; 
    }
}
例如:

public class PlaceholderTF extends TextField
{
    private var placeholderText:String;
    private var currentText:String;

    public function PlaceholderTF(prompt:String="Input text here") {
        super(); // making a correct TextField out of ourselves
        placeholderText = prompt;
        currentText = "";
        AWUTA = false;
        text = "";
    }

    public override function set text(value:String):void {
        if (currentText != value) {
            currentText = value;

            // calling built-in setter to correctly update text
            if (currentText == null || currentText == "") {
                super.text = placeholderText;
            } else {
                super.text = currentText;
            }
        }
    }
}
var placeholder_text:String = "Search";

myTextField.addEventListener(FocusEvent.FOCUS_IN,  focusIn);
myTextField.addEventListener(FocusEvent.FOCUS_OUT, focusOut);

// fire when click to edit
function focusIn(event:Event):void
{
    if(myTextField.text == placeholder_text)
    {
        myTextField.text = ""; 
    }
 }

// fire when you clicked out
function focusOut(event:Event):void
{

    if(myTextField.text == "")
    {
        myTextField.text = placeholder_text; 
    }
}

这个解决方案相当粗糙,但可能有效

下面是一个对我来说适用于表单验证的示例:

var placeholder_text:String = "Search";

myTextField.addEventListener(FocusEvent.FOCUS_IN,  focusIn);
myTextField.addEventListener(FocusEvent.FOCUS_OUT, focusOut);

// fire when click to edit
function focusIn(event:Event):void
{
    if(myTextField.text == placeholder_text)
    {
        myTextField.text = ""; 
    }
 }

// fire when you clicked out
function focusOut(event:Event):void
{

    if(myTextField.text == "")
    {
        myTextField.text = placeholder_text; 
    }
}
package components {
import flash.events.Event;
import flash.events.FocusEvent;
import flash.text.TextField;

public class TextFieldPlaceholder extends TextField {

    private var _placeholderText:String;
    private var _currentText:String;

    public function TextFieldPlaceholder(placeholderText:String = 'Input text here') {
        _placeholderText = placeholderText;
        _currentText = '';
        this.addEventListener(FocusEvent.FOCUS_OUT, onFocusOut);
        this.addEventListener(FocusEvent.FOCUS_IN, onFocusIn);
        super();
    }

    override public function get text():String {
        if (_currentText == _placeholderText) {
            return '';
        }
        return _currentText;
    }

    override public function set text(value:String):void {
        _currentText = value;
        if (!_currentText) {
            super.text = _placeholderText;
        } else {
            super.text = _currentText;
        }
    }

    private function onFocusIn(e:Event):void {
        super.text = _currentText;
    }

    private function onFocusOut(e:Event):void {
        this.text = super.text;
    }
  }
}

您可以模仿Flex框架的实现。谢谢Jason,但是当文本焦点上的输入消失时。谢谢Vesper,但我认为此解决方案仅适用于清除文本字段,而不移动文本前面的焦点,nvm它甚至可能不存在。