2012-02-29 46 views
0

我有一個onChange事件,我想測試一個comboBox是否爲空,如果是,我想改變comboBox的顏色。我可以找到一個值,例如「弗雷德布羅格斯」,而不是測試,看看它是空的:如果沒有選中的項AS3組合框是否爲空?

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

回答

1

將selectedItem財產將是無效的:

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 2012-02-29 02:31:29

+0

問題是你使用了錯誤的EventHandler,我已經更新了我的答案來幫助。 – DNJohnson 2012-02-29 02:45:38

+0

唯一的空值位於列表頂部。基本上,它是空白的,直到改變。我想檢查它何時回覆空白,如果這是有道理的。 – user1203605 2012-02-29 02:47:15

0

柔性變化事件時用戶發起的改變,才調度。如果更改是用戶啓動的,則不會爲空。如果你想查找null,請嘗試valueCommit屬性/事件。

+0

但是,當有值時不應該觸發,然後改變爲無值? (Flex是否與Flash AS3完全相同?) – user1203605 2012-02-29 02:45:26

+0

@ user1203605是的,如果這是您的組合框'數據提供者的選項之一。 – 2012-02-29 13:41:50

+0

@ user1203605爲什麼不比較comboBox.selectedLabel而不是event.target.selectedItem.label? – 2012-02-29 13:42:21