as3 - 遍历所有文本字段?

时间:2012-11-01 14:41:50

标签: forms actionscript-3 post

我在as3 flash中有一个表单,其中包含文本字段和单选按钮,其“实例名称”全部连续设置,例如: field_1 field_2 field_3 ...等

AS3代码中是否有一种简单的方法可以遍历所有这些字段并在数组中获取它们的值?理想情况下,我想要一个简单的循环来获取值(所以我可以添加一个简单的弹出窗口,如果缺少一个值)然后使用填充的数组只需使用URLRequest发布它。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果你想要一种工作少一点且更易维护的方法(如果将来文本​​的数量可以改变,或者你需要在其他表单上重用代码或者不想打扰实例名称),那么你可以做类似下面的代码。

请记住,假设您的所有文本字段都是同一父级的子级,并且位于该父级的范围内(因此在时间轴中包含所有文本字段的框架中)

function validateTextFields(){
    var tmpTf:TextField;
    var i:int = numChildren;
    while(i--){ //iterate through all the display objects on this timeline
        tmpTf = getChildAt(i) as TextField;
        if(tmpTf){
            //now that you have the textfield, you can check for an appropriate value, or send the value to a server, or store it in an array etc.

            //check if the value is blank, if so set the background to red
            if(tmpTf.text == ""){
                tmpTf.background = true;
                tmpTf.backgroundColor = 0xFF0000;
            }else{
                tmpTf.background = false;
            }
        }
    }
}

答案 1 :(得分:0)

听起来你想使用for语句。我还使用了一个多维数组来存储实例名称及其包含的文本。我喜欢使用变量_path来定义代码的范围。

var _path = this;
var text_ar:Array = new Array(['instance_1',''],['instance_2',''],['instance_3','']);    //instance name, instance text.

for(var i=0; i<ar.length; i++)
{
     text_ar[i][1] = _path[text_ar[i][0]].text
}

trace( text_ar[1][1] ); //Traces the text that's entered in instance_1.