AS3,如何在组合框中选择项目时触发搜索功能?
问题描述:
我有一个组合框可以作为搜索应用程序的自我暗示。搜索功能正在通过搜索按钮触发。我还希望在组合框中的项目是双击或单击时触发搜索功能。代码:AS3,如何在组合框中选择项目时触发搜索功能?
//for triggering search function from combobox(search_complex) it will be
something like that but i am not sure
search_complex.addEventListener(Event.CHANGE, search);
search(event:Event):void{//something will come hereto use "selctedItem" to
trigger search function}
//search function which is working fine by pressing search button
bt_search.addEventListener(MouseEvent.CLICK, search);
function search(MouseEvent):void{
currentUserbase = [];
for (var n:int = 0; n<allUserbase.length; n++)
{
for (var k:int = 0; k<allUserbase[n].complex.length; k++)
{
if ((allUserbase[n].complex[k].value.toLowerCase() ==
search_complex.text.toLowerCase() || search_complex.text==""))
{
currentUserbase.push(allUserbase[n]);
}
}
}
updateList();
}//end search
答
我相信你是在正确的轨道上。尝试:
search_complex.addEventListener(Event.CHANGE, search);
bt_search.addEventListener(MouseEvent.CLICK, search);
function search(event:Event):void
{
currentUserbase = [];
for (var n:int = 0; n<allUserbase.length; n++)
{
for (var k:int = 0; k<allUserbase[n].complex.length; k++)
{
if ((allUserbase[n].complex[k].value.toLowerCase() == search_complex.text.toLowerCase() || search_complex.text==""))
{
currentUserbase.push(allUserbase[n]);
}
}
}
updateList();
}//end search
你应该使用search_complex.selectedItem.label
或search_complex.selectedItem.label
取决于你需要使用哪个属性能得到您的组合框中选定的项目。
答
我不明白你到底想要什么。
它是rue,你有一个搜索功能,这将正常工作。 现在你不需要每个事件单独处理程序。对所有事件使用一个就足够了。由于所有其他事件都从这个基类继承,因此functionparameter使用“Event”类型。
检查我的代码。 CD是我的组合框。这个例子是写在flex3
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable] private var arr:ArrayCollection = new ArrayCollection([
{name:"Alexander"},
{name:"Bernd"},
{name:"Carl"}
]);
private function init():void
{
cb.addEventListener(MouseEvent.CLICK,search);
cb.addEventListener(MouseEvent.DOUBLE_CLICK,search);
cb.addEventListener(Event.CHANGE,search);
}
private function search (event:Event) :void
{
trace (event.type);
}
]]>
</mx:Script>
@jason,感谢回答,但如果和如何使用search_complex.selectedItem.label怎么这样,当我在组合框中选择一个项目,就会触发“搜索”功能 – hanna 2011-03-03 16:38:55
@hanna,假设'search'是实际执行搜索的函数,只要单击'bt_search'按钮或从'search_complex combobox'中选择一个项目,它就会自动调用。这就是我的例子中eventListeners的用处。至于何时使用'search_complex.selectedItem.label',我假设您会在需要的地方使用它来设置搜索条件。如果'updateList()'使用'currentUserbase'数组的内容执行搜索,则可以在'search()'中将'search_complex.selectedItem.label'添加到数组中。 – 2011-03-03 17:03:34
@jason,感谢您在这里帮助我,但我仍然对事物感到困惑,我实际上使用AutoComplete高级示例中的autocomple框在以下链接中:http://developer.yahoo.com/flash/astra-flash/ autocomplete/examples.html现在,当我使用search_complex.addEventListener(Event.CHANGE,搜索);它只会自动执行搜索下拉列表中的第一项内容,而不是用户选择的项目。 updateList只是在搜索功能完成时用结果更新另一个列表。 – hanna 2011-03-03 17:23:14