javascript - 动态创建特定数量的输入表单元素

标签 javascript html forms

我读过很多关于动态添加字段集的博客和帖子,但它们都给出了非常复杂的答案。我需要的并没有那么复杂。

我的 HTML 代码:

<input type="text" name="member" value="">Number of members: (max. 10)<br />
<a href="#" id="filldetails">Fill Details</a>

因此,用户将在 input 字段中输入一个整数值(我正在使用 javascript 检查验证)。点击 Fill Details 链接,会出现相应数量的输入字段供他输入。我想使用 javascript 来实现这一点。

我不是 JavaScript 专家。我在想如何通过链接检索用户在 input 字段中填写的整数并显示相应数量的输入字段。

最佳答案

你可以使用 onclick事件处理程序以获得文本字段的输入值。确保给该字段一个唯一的 id属性,以便您可以通过 document.getElementById() 安全地引用它:

如果你想动态添加元素,你应该有一个容器来放置它们。例如,<div id="container"> .通过 document.createElement() 创建新元素,并使用 appendChild()将它们中的每一个附加到容器中。您可能对输出有意义的 name 感兴趣属性(例如 name="member"+i 用于每个动态生成的 <input> s,如果它们要以表单形式提交的话。

请注意,您还可以创建 <br/>带有 document.createElement('br') 的元素.如果你只想输出一些文本,你可以使用 document.createTextNode()相反。

此外,如果您想在每次填充容器时清除容器,您可以使用 hasChildNodes()removeChild()在一起。

<html>
<head>
    <script type='text/javascript'>
        function addFields(){
            // Generate a dynamic number of inputs
            var number = document.getElementById("member").value;
            // Get the element where the inputs will be added to
            var container = document.getElementById("container");
            // Remove every children it had before
            while (container.hasChildNodes()) {
                container.removeChild(container.lastChild);
            }
            for (i=0;i<number;i++){
                // Append a node with a random text
                container.appendChild(document.createTextNode("Member " + (i+1)));
                // Create an <input> element, set its type and name attributes
                var input = document.createElement("input");
                input.type = "text";
                input.name = "member" + i;
                container.appendChild(input);
                // Append a line break 
                container.appendChild(document.createElement("br"));
            }
        }
    </script>
</head>
<body>
    <input type="text" id="member" name="member" value="">Number of members: (max. 10)<br />
    <a href="#" id="filldetails" onclick="addFields()">Fill Details</a>
    <div id="container"/>
</body>
</html>

请参阅此 JSFiddle 中的工作示例.

关于javascript - 动态创建特定数量的输入表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853779/

相关文章:

javascript - 将一个网站上的输入文本框连接到另一个网站上的输入文本框?

javascript - 使用 jquery 或 javascript 在 wordpress 中获取 pagetitle

javascript - 使用相同的图像从右侧滑入和滑出 div - JQuery

html - 使用显示 :table-cell 时无法在 div 之间提供空格

PHP代码点火器;防止表单重新提交

php - 克隆 div 并逐步重命名元素 ID

javascript - CacheStorage.open() 在 Chrome 中返回未定义

c# - 从JavaScript设置runat =“server”

隐藏的 HTML/CSS 字段集图例

javascript - 用户可以选择两个输入,但只需要一个。