【问题标题】:How to add another input field with increment of name value using JavaScript?如何使用 JavaScript 添加另一个名称值递增的输入字段?
【发布时间】:2021-05-10 13:09:43
【问题描述】:

我有两个下拉菜单和两个单选按钮组。我想要的是添加另一个下拉菜单和单选按钮及其更新的名称值。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 var i = 1;
  function textBoxCreate(){
var y = document.createElement("INPUT");
y.setAttribute("type", "text");
y.setAttribute("Placeholder", "Name_" + i);
y.setAttribute("Name", "Name_" + i);
document.getElementById("myForm").appendChild(y);
i++;
}
<label for="cars">Choose a car:</label>
  <select name="cars" name="CARS_1">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
  </select><br>
 <label for="cars">Choose a range:</label>
  <input type="radio"  name="RANGE_1" value="30">
  <label for="range-1">0 - 30</label><br>
  <input type="radio" name="RANGE_1" value="60">
  <label for="range-2">31 - 60</label><br>  
  <input type="radio"  name="RANGE_1" value="100">
  <label for="range-3">61 - 100</label>
  <br><br>

  <label for="cars">Choose a car:</label>
  <select name="cars"  name="CARS_2">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
  </select><br>
 <label for="cars">Choose a car:</label>
  <input type="radio"  name="RANGE_2" value="30">
  <label for="range-1">0 - 30</label><br>
  <input type="radio"  name="RANGE_2" value="60">
  <label for="range-2">31 - 60</label><br>  
  <input type="radio"  name="RANGE_2" value="100">
  <label for="range-3">61 - 100</label>
  <br><br>
  <button type="button" class="add-btn" onclick="addAnotherOne()">+ ADD ANOTHER DATA</button>

如何使用 JavaScript 增加输入字段的名称值? 我不想使用克隆。

【问题讨论】:

  • 请告诉我们您的尝试。
  • 为什么不克隆?目前,您有几个具有相同 ID 的项目。你可能想解决这个问题。
  • 你用jquery打开了吗?
  • 添加另一个下拉菜单和单选按钮 - 那你为什么将类型设置为text
  • 在继续添加所有这些元素之前,先给它一些结构。添加群组而非个人

标签: javascript html jquery input


【解决方案1】:

您需要为每个控件提供唯一的 ID 和名称。因此,根据您的代码,更改 id 和 name 的唯一性并检查以下代码。将您的代码包装在您最后附加 html 的任何控件(我采用 div)中。

另外你没有为删除添加,如果你愿意,那么你可以对添加做同样的事情,只需选择索引并删除具有当前索引号的内容。

var indexToStart=3; //here we start with 3 as we already have 2 set of controls
function addAnotherOne(){
var strBuildHtml = '<label >Choose a car:</label> \
  <select id="cars'+ indexToStart +'" name="cars'+ indexToStart +'">  \
    <option value="volvo">Volvo</option>  \
    <option value="saab">Saab</option>  \
    <option value="opel">Opel</option>  \
    <option value="audi">Audi</option>\
  </select><br>\
 <label >Choose a car:</label>\
  <input type="radio" id="age'+ indexToStart +'-1" name="age'+ indexToStart +'" value="30">\
  <label for="range'+ indexToStart +'-1">0 - 30</label><br>\
  <input type="radio" id="age'+ indexToStart +'-2" name="age'+ indexToStart +'" value="60">\
  <label for="range'+ indexToStart +'-2">31 - 60</label><br>  \
  <input type="radio" id="age'+ indexToStart +'-3" name="age'+ indexToStart +'" value="100">\
  <label for="range'+ indexToStart +'-3">61 - 100</label>\
  <br><br>'
$("#dvHtml").append(strBuildHtml);
 indexToStart = indexToStart+1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='dvHtml' >
<label >Choose a car:</label>
  <select  id="cars1" name="cars1">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
  </select><br>
 <label >Choose a range:</label>
  <input type="radio" id="age1-1" name="age1" value="30">
  <label for="range1-1">0 - 30</label><br>
  <input type="radio" id="age1-2" name="age1" value="60">
  <label for="range1-2">31 - 60</label><br>  
  <input type="radio" id="age1-3" name="age1" value="100">
  <label for="range1-3">61 - 100</label>
  <br><br>

  <label >Choose a car:</label>
  <select id="cars2" name="cars2">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
  </select><br>
 <label >Choose a car:</label>
  <input type="radio" id="age2-1" name="age2" value="30">
  <label for="range-1">0 - 30</label><br>
  <input type="radio" id="age2-2" name="age2" value="60">
  <label for="range-2">31 - 60</label><br>  
  <input type="radio" id="age2-3" name="age2" value="100">
  <label for="range-3">61 - 100</label>
  <br><br>
 </div>
 
  <button type="button" class="add-btn" onclick="addAnotherOne()">+ ADD ANOTHER DATA</button>

【讨论】:

  • 这将导致 ID 被克隆
  • 动态改变id
  • 单选按钮 name 应该相同,否则用户可以检查所有三个。
  • 是的,我们需要分组。更新了代码
【解决方案2】:

如何使用 JavaScript 增加输入字段的名称值?

  1. 获取要增加的值。目前,您有几个具有相同 ID 的项目,这使得它更加困难。如果您解决了这个问题,您可以轻松访问该值,例如document.getElementById("uniqueID").value
  2. 从中提取数字并转换为 int。 “RANGE_2”parseInt(str.replace('RANGE_',''));
  3. 添加 1 并再次与“RANGE_”连接"RANGE_"+(i+1)

【讨论】:

  • 能否请您用我当前的 JS 更新您的答案。
  • 你能用小提琴吗?
  • @Pierre 如果可能的话,你不应该作为一个小提琴,而是作为用户使用 Stack Overflows 的 sn-p 工具&lt;&gt;
  • 对不起,我就是这个意思。
猜你喜欢
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
相关资源
最近更新 更多