文本输入错误/验证并在Flex中恢复以前的正确值

时间:2009-07-02 02:45:36

标签: flex validation textbox

我有文字输入框。使用numberValidator对每个框进行验证。 现在,问题在于使用警告框来显示是否发生任何错误。

流程图::

1>在textBox中插入值。 2 - ; NumberValidator验证“trigger = change”的输入。 3 GT;如果错误,则显示警告消息。用户单击“确定”返回到表单。 4>焦点设置回TextBox。 5个但是,警告框使文本输入值为空/空。即,现在不会显示用户输入的先前错误值和默认正确值。

目标:显示在文本框中输入的最新正确值。不是任何其他的默认值,而是用户输入的最新正确值。

任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

您需要将最新的正确答案存储在变量中,并使警报的单击/关闭处理程序将值替换为存储的var。

这是一个监听警报事件的例子:

<?xml version="1.0"?>
<!-- controls\alert\AlertEvent.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.CloseEvent;

            private var lastKnownCorrectAnswer:String = "Some Answer";

            private function alertListener(eventObj:CloseEvent):void {
                // Check to see if the OK button was pressed.
                if (eventObj.detail==Alert.OK) {
                    myText.text = lastKnownCorrectAnswer; 
                }
            }
        ]]>
    </mx:Script>

    <mx:TextInput id="myAnswer" 
        width="150" 
        text="" />
    <mx:Button id="myButton" 
        label="Copy Text" 
        click='Alert.show("Copy Text?", "Alert",
            Alert.OK | Alert.CANCEL, this,
            alertListener, null, Alert.OK);'/>
</mx:Application>

您需要在那里添加验证逻辑,但您明白了。以上内容来自Alert docs

答案 1 :(得分:0)

这是一个完整的答案。我使用文本框的“enter”事件进行验证,因为只有输入一个字符后才会触发“change”事件

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert

            // set last correct value to a default
            private var lastCorrectValue:String="411"

            function handleInvalid(event:Event)
            {
                Alert.show("invalid");
                textInput.text=lastCorrectValue
            }

            function handleValid()
            {
                Alert.show('Validation Succeeded!')
                lastCorrectValue=textInput.text
            }
        ]]>
    </mx:Script>
    <mx:TextInput id="textInput"
                  text="{lastCorrectValue}"/>
    <!-- Use the enter event of the text box to do validation. The change event fires after a single character-->
    <mx:NumberValidator source="{textInput}"
                        property="text"
                        integerError="Enter Integer value"
                        domain="int"
                        trigger="{textInput}"
                        triggerEvent="enter"
                        invalid="handleInvalid(event)"
                        valid="handleValid();"/>
</mx:Application>

答案 2 :(得分:0)

在文本输入FocusIn()上触发事件,并将任何文本值存储在变量中。 (那将是你最后的正确答案)。验证后将输入框文本重置为此值...希望我有道理:)