The following example shows how you can detect when a user double clicks a Flex TextInput control using the doubleClick event.

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/06/24/detecting-a-double-click-on-a-textinput-control-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            private function textInput_doubleClick(evt:MouseEvent):void {
                var ti:TextInput = evt.currentTarget as TextInput;
                ti.enabled = !ti.enabled;
                ti.editable = ti.enabled;
            }
        ]]>
    </mx:Script>

    <mx:TextInput id="textInput1"
            text="The quick brown fox jumped over the lazy dog"
            doubleClickEnabled="true"
            doubleClick="textInput_doubleClick(event);" />

    <mx:TextInput id="textInput2"
            text="The quick brown fox jumped over the lazy dog"
            doubleClickEnabled="true"
            doubleClick="textInput_doubleClick(event);" />

</mx:Application>

View source is enabled in the following example.

Due to popular demand, here is the “same” example in a more ActionScript friendly format:

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/06/24/detecting-a-double-click-on-a-textinput-control-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        initialize="init();">

    <mx:Script>
        <![CDATA[
            import mx.controls.TextInput;

            private var textInput1:TextInput;
            private var textInput2:TextInput;

            private function init():void {
                textInput1 = new TextInput();
                textInput1.text = "The quick brown fox jumped over the lazy dog";
                textInput1.doubleClickEnabled = true;
                textInput1.addEventListener(MouseEvent.DOUBLE_CLICK,
                            textInput_doubleClick);
                addChild(textInput1);

                textInput2 = new TextInput();
                textInput2.text = "The quick brown fox jumped over the lazy dog";
                textInput2.doubleClickEnabled = true;
                textInput2.addEventListener(MouseEvent.DOUBLE_CLICK,
                            textInput_doubleClick);
                addChild(textInput2);
            }

            private function textInput_doubleClick(evt:MouseEvent):void {
                var ti:TextInput = evt.currentTarget as TextInput;
                ti.enabled = !ti.enabled;
                ti.editable = ti.enabled;
            }
        ]]>
    </mx:Script>

</mx:Application>
 
Tagged with:
 
About The Author

Peter deHaan

Peter deHaan currently works for Adobe on the Flex SDK QA team. While not working on Flex, Flash, and ColdFusion applications, Peter enjoys making up bios and writing in 3rd person. Peter's rarely updated blog can be found at blogs.adobe.com/pdehaan/, actionscriptexamples.com, airexamples.com, and coldfusionexamples.com.

8 Responses to Detecting a double click on a TextInput control in Flex

  1. Hi,

    when you doubleclick you will select a whole word. To remove the selection, add the following befor the closing brace of the function:


    ti.setSelection(0,0);

    This will select nothing.

    g2 cbr

  2. Tom says:

    Quick question, I have built the same application with a basic textinput but on my laptop I cant type number and the ‘%’ char. But on this example I can.

    So what are the differences???

  3. peterd says:

    Tom,

    Is the restrict property set?

    Peter

  4. Tom says:

    Hi peterd, yes I restrict only number. But I have the same problem with a TextInput w/o any restrict. I have noticed I have this problem on some other flex applications, should be a local setting compiler or something like that?

  5. peterd says:

    Tom,

    It shouldn’t be. Can you please file a bug at http://bugs.adobe.com/flex/ and include a simple test case showing the behavior. Somebody on the Flex SDK QA team can look into it.

    Peter

  6. Tom says:

    Ok I found the bug!!! When you set the wmode to ‘opaque’ the keyboard doesnt work properly. Woa, is it normal?

  7. Aaron Benson says:

    This is not working in Firefox 3.6 on Mac OSX. Apparently DOUBLE_CLICK events do not work in Flex with Firefox 3.6 : http://bugs.adobe.com/jira/browse/FP-3751

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Anti-Spam Protection by WP-SpamFree