只有在开始时可见,DateChooser才能正确更新

时间:2010-03-18 03:31:06

标签: flex halo

我正在编写一个Flex应用程序,但我发现了我认为是一个奇怪的问题。

我想创建一个文本框和一个DateChooser,因为datefield没有按我想要的那样做,它是Halo所以我不能轻易地去皮肤。我想在我点击文本输入时显示DateChooser。除了我的代码之外,这是一个:

    <s:TextInput id="wholeDate" width="100"  
                 mouseOver="stopChangeToNormal();"
                 paddingRight="10"
                 click="date1.visible = true"
                 focusOut="date1.visible = false"/>
    <s:Button label="Go" width="70" />
</s:Panel>

<mx:DateChooser id="date1" 
                visible = "false"
                change="useDate(event);" 
                mouseOver="changeToNormalState = false;" 
                y="{wholeDate.y + buttonsGroup.y + 20}"
                x="{wholeDate.x + buttonsGroup.x - 175 }" />    

奇怪的是,如果我开始visible = "true"它会起作用,但是如果我有它visible="false"它就不起作用了!它显示,但我选择的日期不会显示在框中,如果我将其显示为visible="true",但我不希望它最初可见。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为它实际上与DateChooser的初始可见性无关。您是否已确认您的事件处理程序确实已被调用,并且按照有意义的顺序进行验证?问题似乎是当您尝试在DateChooser中进行选择时,TextInput会获取一个focusOut事件,该事件会隐藏DateChooser,这显然会阻止它接收选择事件。我认为你需要更加有选择性地隐藏DateChooser。也许您需要推迟隐藏,以便它有机会首先响应选择。