我在Flash CS5表单中有一些TextAreas,如果用户单击表单上的其他位置,我想从上次选择的TextArea中删除焦点。我怎么能这样做?
答案 0 :(得分:2)
假设你的舞台是你的形式:
function setEventListeners():void
{
stage.addEventListener(MouseEvent.CLICK, mouseUpEventHandler);
}
function mouseUpEventHandler(evt:MouseEvent):void
{
if (!evt.bubbles)
stage.focus = null;
}
否则,将事件侦听器添加到表单对象中,该表单对象将textFields作为子节点而不是舞台。
答案 1 :(得分:0)
您需要某种形式的标识符才能知道何时单击最后一个TextField。这将允许您设置条件。
我在这里给出的例子不仅是处理焦点,它还重置了你的字段的tabIndex,这可以很方便,以防提交被取消&如果用户使用TAB在字段之间导航,则不希望焦点位于表单的中间位置。
//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;
}