1

こんにちは、私はアクション スクリプトを学んでいて、テキスト フィールドが入力された後に関数を実行するボタンを取得しようとしています。phoneNum はテキスト フィールド ID です。

//function with var testing the textfield content. 

function sendInfoBtn()
    {
    var lengthOf = phoneNum.text.length;
    if (lengthOf == 10){
    sendInfo.addEventListener(MouseEvent.CLICK, doThisThing, false, 0, true);
    }
}

//I'd really like to just add the lengthOf variable to this changelistener somehow
phoneNum.addEventListener(Event.CHANGE, sendInfoBtn, false, 0, true);

function realFunction(){
//things to do
}
4

2 に答える 2

1

よりクリーンなアプローチは次のとおりです。

sendInfo.addEventListener(MouseEvent.CLICK, doThisThing, false, 0, true);

private function doThisThing(e:MouseEvent):void
{
   if(phoneNum.text.length >= 10) 
   {
      realFunction();
   }
}

このように変更イベントは必要ありません。ユーザーがボタンをクリックすると、テキスト フィールドに十分な文字があるかどうかを検証し、必要な実際の関数を呼び出すだけです。

十分な文字が入力されるまでボタンを無効にしたい場合は、CHANGE イベントを使用できます。

sendInfo.enabled = false;
phoneNum.addEventListener(Event.CHANGE, phoneNumChange, false, 0, true);

sendInfo.addEventListener(MouseEvent.CLICK, doThisThing, false, 0, true);

private function doThisThing(e:MouseEvent):void
{
   if(phoneNum.text.length >= 10) 
   {
      realFunction();
   }
}

private function phoneNumChange(e:Event):void
{  
    sendInfo.enabled = phoneNumb.text.length >= 10;
}
于 2013-05-26T04:22:08.597 に答える
0

上記のコメントから、質問は入力フィールドの状態に基づいてボタンを有効/無効にする方法だったと思います。

これを説明するコードを次に示します。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Script>
        <![CDATA[

        private function onPhoneNumChanged():void
        {
            sendButton.enabled = (phoneNumField.text.length == 10);
        }

        private function onSend():void
        {
            // do send the phone number
        }
        ]]>
    </fx:Script>

    <mx:VBox>

        <s:TextInput id="phoneNumField" change="onPhoneNumChanged();"/>

        <s:Button label="SEND" id="sendButton" enabled="false" click="onSend();"/>

    </mx:VBox>

</s:Application>
于 2013-05-27T07:26:52.140 に答える