如何获得具有相同名称的多个文本?

时间:2017-05-31 12:35:48

标签: javascript jquery html

当为每个复选框jquery创建输入检查复选框时 如何获取名称的所有输入?

如果选中复选框,则创建输入:

    <script>
function dynInput(cbox) {
    if (cbox.checked) {
        var input = document.createElement("input");
        input.type = "text";
        input.className = "cbox";
        var div = document.createElement("div");
        div.className = "cbox-div";
        div.id =  cbox.name;
        div.innerHTML =cbox.name;

        div.appendChild(input);
        document.getElementById("insertinputs").appendChild(div);
    } else {
        document.getElementById(cbox.name).remove();
    }
}</script>

复选框和输入:

      <form class="add-item">
          <input type="checkbox"  onclick="dynInput(this);"  name="1"> 1<br>
          <input type="checkbox"  onclick="dynInput(this);"  name="2"> 2<br>
          <input type="checkbox"  onclick="dynInput(this);"  name="3"> 3<br>
          <input type="checkbox"  onclick="dynInput(this);"  name="4"> 4<br>
      </form>
      <p id="insertinputs"></p>

我只能获得第一个输入值:

    var item = $(".cbox").val();

    console.log(item);

4 个答案:

答案 0 :(得分:1)

您需要迭代所有输入,例如:

$(".cbox").each(function(){
    var item = $(this).val();
    console.log(item);
});

答案 1 :(得分:1)

var item=[];
$(".cbox").each(function(){
item.push($(this).val());
});

答案 2 :(得分:1)

var items = document.querySelectorAll('.cbox');

var values = [];

items.forEach(function(item) {
  values.push(item.value);
});

console.log(values);

答案 3 :(得分:0)

因为val()的documentation状态只返回集合中的第一个项目。您需要遍历集合并阅读每个项目的值。

因此,您需要遍历集合并构建列表。您可以使用each()或map()

来完成

&#13;
&#13;
var vals1 = [];
$('[type="checkbox"]').each( function () {
   vals1.push(this.value);
});

var vals2 = $('[type="checkbox"]').map( function () {
   return this.value;
}).get();

console.log("vals1", vals1.join(","))
console.log("vals2", vals2.join(","))
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" value="a"> 1<br>
<input type="checkbox" value="b"> 2<br>
&#13;
&#13;
&#13;