将用户输入保存在Array中

时间:2013-07-23 07:44:40

标签: javascript jquery html arrays input

我是html / js / jquery的真正初学者。

我正在尝试将用户输入保存到数组中,之后我想将该数组中的所有信息写入xml文件。

我的问题是我的表单由多个作业组成,这些作业都具有相同的输入字段。

这是第一份工作的简短例子:

<form>
    <table class="wrapper">
        <tr>
            <td style="text-align: left">First Digit:
            <div> <input id="fDigit" type="text" name="Job1[]" /></td>
            <td style="text-align: left">System:      
            <div> <input id="system" type="text" name="Job1[]" /></td>
            <td style="text-align: left">SAP Modul:  
            <div> <input id="sapModul" type="text" name="Job1[]" /></td>
        </tr>
        <tr>
            <td style="text-align: left">Country: 
            <div> <input id="country" type="text" name="Job1[]" /></td>
            <td style="text-align: left">Duration: 
            <div> <input id="duration" type="text" name="Job1[]" /></td>
            <td style="text-align: left">Step Number: 
            <div> <input id="stepNumber" type="text" name="Job1[]" /></td>
        </tr>
        <tr>
            <td style="text-align: left">Optional Text:
                <div> 
                <textarea align ="left" id ="optionalText" name="Job1[]" cols="20" rows="2"> </textarea>
                </div>
            </td>
        </tr>
    </table>
</form>

我的剧本中有更多这些。

我现在想要做的是将每个Job的信息保存到一个数组中,这意味着Job1 []:上面显示的每个字段的用户输入,Job2 []:不同的用户输入但类似的输入字段与一样的名字。 可能有一个更容易的解决方案来做到这一点,但我只是想不出来。

很抱歉,如果这是一个太愚蠢的问题,但我试图找到解决方案多年,找不到帮助我的解决方案。

提前致谢!

4 个答案:

答案 0 :(得分:0)

您不需要使用多个数组名称,因为javascript是客户端

只需使用Job1[]

答案 1 :(得分:0)

我建议您将数据组织为JSON对象,例如

[{"Country": a, jobs:[your array]},{"Country":b, jobs:[your array]}]

要向数组插入值,您可以使用:your_array.push(value)

希望得到这个帮助。

答案 2 :(得分:0)

您可以在输入名称中使用二维数组,第一个索引是行索引,第二个索引是列名称,类似Jobs[0][Country]。最后,您将把所有数据放在一个数组中。

此外,如果您要重复为每个作业发布的标记,请避免在输入中使用id属性,因为这会产生无效的标记。 Id属性在HTML页面中必须是唯一的,而是使用类。

答案 3 :(得分:0)

对于初学者,最简单的解决方案可能是使用为您构建序列化的组件。你的表单应该有一个名字(属性),而id也可能有用。

我发现form2js非常实用,它可以管理将类似命名的字段收集到数组中。

我还制作了一个small fiddle,其中显示了一种自行收集信息的方法,例如:

var job1 = [];
$('[name="Job1[]"]').each(function(index, inputField) {
    job1.push($(inputField).val());
});
console.log(job1);