从一组动态创建的表单字段中读取数据



我正在使用ASP.NET MVC,并尝试使用jQuery从一组动态创建的表单字段中读取数据。我用来生成字段的代码如下(这只是一个测试示例,而不是完整的MVC视图):

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title> Dynamically create input fields- jQuery </title>
    <script src="/Scripts/jquery-2.1.3.js"></script>
</head>
<body>
    <form>
        <div id="itemRows">
            Item quantity: <input type="text" name="add_qty" size="4" />
            Item name: <input type="text" name="add_name" />
            <input onclick="addRow(this.form);" type="button" value="Add row" />
        </div>
    </form>
    <script type="text/javascript">
        var rowNum = 0;
        function addRow(frm) {
            rowNum++;
            var row = '<p id="rowNum' + rowNum + '">Item quantity: <input type="text" name="qty[]" size="4" value="' + frm.add_qty.value + '"> Item name: <input type="text" name="name[]" value="' + frm.add_name.value + '"> <input type="button" value="Remove" onclick="removeRow(' + rowNum + ');"></p>';
            jQuery('#itemRows').append(row);
            frm.add_qty.value = '';
            frm.add_name.value = '';
        }
        function removeRow(rnum) {
            jQuery('#rowNum' + rnum).remove();
        }
    </script>
</body>
</html>

我只是不知道如何阅读添加的字段,视图源也没有帮助。

如果您想将form数据序列化为JSON,您只需序列化完整的form,然后在JSON对象中找到添加的字段:

 var form = $('form'); //care if you have multiple forms on your page
 var formData = JSON.stringify(form.serializeArray());

现在formData变量包含表单中的所有输入。如果有许多输入,则得到一个数组。

实际上,我发现通过将索引值添加到ID的末尾,将在for循环中工作,只需引用rowNum即可获得索引的最大值。问题解决了。

最新更新