选择所有具有相同名称的输入将返回1个值

时间:2019-04-24 02:48:52

标签: jquery forms

我有一个带有16个数字输入的表单,我编写了一个“ click”函数,如下所示:

$("#continue").click(function (e) {
      var mealOption = $("input[name='option[]']").val();
      console.log(mealOption);
}

尽管所有16个输入都使用相同的名称:option [],但这仅返回1个值,无论我输入多少个输入,它只会返回1个值,这是输入列表中的第一个值。

我哪里出错了?

非常感谢!

2 个答案:

答案 0 :(得分:0)

根据.val()方法上的official jQuery doc

  

获取匹配集中第一个元素的当前值   元素或设置每个匹配元素的值。

这意味着当您的DOM搜索查询返回一个集合时,只会选择第一个元素进行处理。

但是,如果您在<input>中拥有所有<form>元素,则可以使用.serialize().serializeArray()

$('form').on('submit', function (event) {
  event.preventDefault();
  event.stopPropagation();

  const v = $(this).serializeArray();
  $('.values').text(JSON.stringify(v, null, '  '));
});
.values {
  font-family: monospace;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <form>
    <input type="text" name="option" placeholder="input 1" />
    <input type="text" name="option" placeholder="input 2" />
    <input type="text" name="option" placeholder="input 3" />
    <button type="submit">get values</button>
  </form>
  <pre class="values">input values...</pre>
</body>

否则,您将执行以下操作:

$('input[name="option"]').each(function () { console.log($(this).val()); });

答案 1 :(得分:0)

您需要遍历这16个项目。

$("input[name='option[]']").each(function(opt) {
  var mealOption = opt.val();
  console.log(mealOption);
});

$("input[name='option[]']")将获得全部16个项目,但当您调用.val()时,jQuery会选择第一个项目(在幕后)。