在数组值中没有得到插入或推送

时间:2016-04-21 12:14:07

标签: jquery arrays

我有一些带有comman名称属性的输入datalist的html我想存储来自输入数组的所有数据但是没有存储。我试过jQuery push()。但它只存储第一个价值。

HTML

<div id="div-childage">
    <input list="childage" name="childage"> 
    <datalist id="childage">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
    <input list="childage" name="childage"> 
    <datalist id="childage">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
    <input list="childage" name="childage"> 
    <datalist id="childage">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
    <input list="childage" name="childage"> 
    <datalist id="childage">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
</div>

我使用的jQuery

var childagearray = [];
$('#div-childage').each(function() {
    childagearray.push($("input[name='childage']").val());
});
var childage = JSON.stringify(childagearray);

输出需要整数数组

3 个答案:

答案 0 :(得分:1)

您应该为每个数据专家提供一个唯一的id,否则它将始终返回第一个id

$('button').click(function() {
  var childagearray = [];
  $('input').each(function() {
    childagearray.push($(this).val());
  });
  console.log(childagearray)
  var childage = JSON.stringify(childagearray);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="childage">
  <input list="childage1" name="childage">
  <datalist id="childage1">
        <option value="0" selected>
        <option value="1">
        <option value="2">
    </datalist>
  <input list="childage2" name="childage">
  <datalist id="childage2">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
  <input list="childage3" name="childage">
  <datalist id="childage3">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
  <input list="childage4" name="childage">
  <datalist id="childage4">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
</div>

<button>Push data</button>

答案 1 :(得分:0)

首先,您有多个具有相同id属性且无效的元素。 Id必须是文档的唯一标识。要对元素进行分组,请将id转换为类:

<div id="childage-container">
    <input list="childage" name="childage"> 
    <datalist class="childage">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
    <input list="childage" name="childage"> 
    <datalist class="childage">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
    <input list="childage" name="childage"> 
    <datalist class="childage">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
    <input list="childage" name="childage"> 
    <datalist class="childage">
        <option value="0">
        <option value="1">
        <option value="2">
    </datalist>
</div>

从那里你可以使用map()来创建你需要的数组:

var childagearray = $('.childage').map(function() {
   return $(this).val();
}).get();
var childage = JSON.stringify(childagearray);

答案 2 :(得分:0)

试试此代码

var childagearray = [];
$('#div-childage').find('input[name="childage"]').each(function() {
    childagearray.push($(this).val());
});
console.log(childagearray);
var childage = JSON.stringify(childagearray);