2012-02-29 5 views
0

コンボボックスが空であるかどうかをテストしたいonChangeイベントがあります。コンボボックスの色を変更したい場合は、コンボボックスの色を変更します。たとえば私は値を見つけることができます。 「フレッドBloggs」ではなく、それが空だかどうかをテスト:AS3 comboBoxは空ですか?

if (e.target.selectedItem.label == ""){ // This doesn't work 
     trace("EMPTY"); 
my_color.color = 0x002222; 
instructorList.transform.colorTransform = my_color; 
} 

答えて

1

項目が選択されていない場合のSelectedItemプロパティはnullになります。

comboBox.addEventListener(MouseEvent.CLICK, mouseHandler); 

function mouseHandler(e:MouseEvent) { 
    if (e.currentTarget.selectedItem == null){ // This doesn't work 
     trace("EMPTY"); 
     my_color.color = 0x002222; 
     instructorList.transform.colorTransform = my_color; 
    } 
} 

CHANGEイベントはしませんComboBoxに項目がない場合は、その項目を「変更」することができないため、発生することがあります。代わりに、このテストをCLICKハンドラに追加してください。

更新:以下のコメントに新しい情報があれば、インデックスがリストの先頭にある空白の項目と一致するかどうかをテストします。

if (e.currentTarget.selectedIndex == 0) { 
     trace("EMPTY"); 
     my_color.color = 0x002222; 
     instructorList.transform.colorTransform = my_color; 
    } 
+0

私はそれを試みましたが、うまくいきませんでした。私はラベルやデータで試しましたが、変更はありません。 – user1203605

+0

問題はあなたが間違ったEventHandlerを使用していることです。 – DNJohnson

+0

唯一の空の値はリストの先頭です。基本的に、変更するまでは空白です。もしそれが意味をなさないなら、空に戻った時をチェックしたい。 – user1203605

0

ユーザーが変更を開始するときに、フレックス変更イベントのみが送出されます。変更がユーザーによって開始された場合、それはヌルではありません。 nullを探す場合は、valueCommitプロパティ/イベントを試してください。

+0

値があるときには起動しないで、値を変更しないでください。 (フレックスはFlash AS3とまったく同じですか?) – user1203605

+0

@ user1203605はい、これはコンボボックスのデータプロバイダのオプションの1つです。 –

+0

@ user1203605なぜ、event.target.selectedItem.labelではなくcomboBox.selectedLabelと比較してみませんか? –

関連する問題