2010-12-16 387 views
2

Je dispose de quelques zones de texte dans un formulaire Flash CS5 et je souhaite supprimer le focus de la dernière TextArea sélectionnée si l'utilisateur clique ailleurs sur le formulaire. Comment puis-je faire ceci?Supprimer le focus de TextArea dans AS3

Répondre

2

en supposant que votre stade est votre formulaire:

function setEventListeners():void 
    { 
    stage.addEventListener(MouseEvent.CLICK, mouseUpEventHandler); 
    } 

function mouseUpEventHandler(evt:MouseEvent):void 
    { 
    if (!evt.bubbles) 
     stage.focus = null; 
    } 

autrement, ajoutez l'écouteur d'événement à votre objet de formulaire qui a les TextField comme ses enfants au lieu de la scène.

0

Vous auriez besoin d'une forme d'identifiant pour savoir quand le dernier TextField a été cliqué. Cela vous permettra de mettre en place un conditionnel.

L'exemple que je donne ici ne traite pas seulement du focus, il réinitialise également le tabIndex de vos champs, cela peut être utile dans le cas où une soumission a été annulée & vous ne voulez pas mettre l'accent sur le milieu de le formulaire si l'utilisateur utilise TAB pour naviguer entre les champs.

 //This Vector will hold your TextFields 
    private var fields:Vector.<TextField>; 
    private var fieldsDisabled:Boolean; 

    private function clickHandler(event:MouseEvent):void 
    { 
     if(event.currentTarget.name == "Last") 
     { 
      enableTabs(false); 
      fieldsDisabled == true; 

     } else if (fieldsDisabled) 
     { 
      enableTabs(true); 
      fieldsDisabled == false; 
     } 
    } 

    private function enableTabs(enabled:Boolean):void 
    { 
     //provided the fields Vector has been populated... 
     for(var i:int ; i < fields.length ; ++i) 
       fields[i].tabEnabled = enabled; 
    }