0

我是 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>

我的脚本中有更多这样的内容。

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

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

提前致谢!

4

4 回答 4

0

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

只需使用Job1[]

于 2013-07-23T07:48:52.227 回答
0

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

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

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

希望这有帮助。

于 2013-07-23T07:52:04.017 回答
0

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

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

于 2013-07-23T07:59:40.503 回答
0

对于初学者来说,最简单的解决方案可能是使用为您形成序列化的组件。您的表单应该有一个名称(属性),并且一个 id 可能也会很有用。

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

我还做了一个小小提琴,展示了一种自己收集信息的方法,例如像这样。

var job1 = [];
$('[name="Job1[]"]').each(function(index, inputField) {
    job1.push($(inputField).val());
});
console.log(job1);
于 2013-07-23T08:00:14.787 回答