【问题标题】:Save user input in Array将用户输入保存在数组中
【发布时间】:2013-07-23 07:44:40
【问题描述】:

我是 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[]: 不同的用户输入但相似的输入字段与一样的名字。 可能有一个更简单的解决方案来做到这一点,但我就是想不通。

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

提前致谢!

【问题讨论】:

    标签: javascript jquery html arrays input


    【解决方案1】:

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

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

    我还创建了一个small fiddle,展示了一种自己收集信息的方法,例如这样。

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

    【讨论】:

    • 为此干杯!稍后我将使用它来收集 xml 的信息!
    • 使用名称选择器效率不高,因此稍后您可能希望将所有作业1输入添加到一个类,然后使用类选择器 $(".job1") 收集它们.
    【解决方案2】:

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

    只需使用Job1[]

    【讨论】:

      【解决方案3】:

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

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

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

      希望对您有所帮助。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 谢谢!我没想到!我去试试这个
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-03
        • 1970-01-01
        • 1970-01-01
        • 2016-10-22
        • 2019-09-26
        • 2014-06-04
        • 1970-01-01
        相关资源
        最近更新 更多