从动态创建的 TextInput 字段中获取 Flex TextInput.text
Posted
技术标签:
【中文标题】从动态创建的 TextInput 字段中获取 Flex TextInput.text【英文标题】:Get Flex TextInput.text from dynamically created TextInput field 【发布时间】:2012-12-07 00:50:56 【问题描述】:我正在通过类似于下面的 for 循环创建几个 TextInput 框。 NumberOfSelections 变量将根据用户的输入而有所不同。
for(var i:int=1; i <= NumberOfSelections; i++)
InputField = new TextInput;
InputField.id = "Name" + i
InputField.text = "2"
HGroup1.addElement(InputField);
TextInput 文本在运行时是可编辑的,用户将输入数字,然后按下将调用新函数的计算按钮。如何从所有 TextInput 字段中获取信息。例如,如果 NumberOfSelections 为 4,我将如何获取用户输入的所有 4 个数字以便将它们加在一起。是否可以使用唯一的id名称
非常感谢
【问题讨论】:
【参考方案1】:Flextra 的回答绝对正确。我只想添加另外两个选项:
循环遍历 HGroup 的子节点
for (var i:i=0; i<hGroup1.numElements; i++)
var inputField:TextInput = hGroup1.getElementAt(i) as TextInput;
if (inputField) doSomthingWith(inputField.text);
请注意,从“最佳实践”的角度来看,这不是一个非常漂亮的方法。 一个更好的方法可能是
放弃动态实例化并改用 DataGroup
因为这正是 DataGroup 的本意。
<s:DataGroup dataProvider="dp">
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer>
<s:TextInput text="@data.myValue"/>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
<s:layout>
<s:HorizontalLayout/>
</s:layout>
</s:DataGroup>
请注意,myValue
属性必须声明为可绑定才能使其工作。
您现在可以简单地遍历 dp
中的项目来进行计算并让框架处理动态实例化。如果您需要添加/删除 TextInput,只需将项目添加/删除到 dp
。在我看来,这是迄今为止最干净的解决方案,因为它很好地将您的视图与模型分开。
【讨论】:
这自然不会授予对用户编辑的访问权限——您可能可以直接获取 itemRenderer 并询问,但它不会反映在 dataProvider 中。一种选择是将此示例转换为DataGrid
。
@MichaelBrewer-Davis 是的。只需自己运行代码即可。
@RIAstar:我很抱歉。您的编辑有帮助。我确实尝试过运行代码,但(过度)将其简化为不起作用的地方(直接使用字符串作为@data
,而不是带有字符串属性的对象)。【参考方案2】:
您必须在创建字段时保存对字段的引用。我建议将它们存储在一个数组中:
// somewhere in your code; define the variable
public var textBoxArray : Array = new Array();
// somewhere in some method create the textBoxes
for(var i:int=1; i <= NumberOfSelections; i++)
InputField = new TextInput;
InputField.id = "Name" + i
InputField.text = "2"
HGroup1.addElement(InputField);
textBoxArray.push(InputField);
【讨论】:
【参考方案3】:使用 [] 引用您的输入:
for(var i:int=1; i <= NumberOfSelections; i++)
someVariable = this["Name" + i].text;
【讨论】:
以上是关于从动态创建的 TextInput 字段中获取 Flex TextInput.text的主要内容,如果未能解决你的问题,请参考以下文章
从 Swift (3.1) 表格视图中动态创建的单元格获取有序的文本字段数据
如何在不触摸或点击文本字段的情况下从动态创建的 UITextField 获取文本(禁用用户交互)?