是否可以通过jquery将输入数组传递给另一个输入?

时间:2016-08-09 20:52:04

标签: jquery html forms

我有一些像这样的输入:

<input name="name1[]" value="1"/>
<input name="name1[]" value="2"/>
<input name="name1[]" value="3"/>

我还有另外一个输入:

 <input name="name2" />

我想要name1到name2的输入值。

我试试这个:

$('input[name=name1]').val($('input[name=name2]').val());

3 个答案:

答案 0 :(得分:0)

您无法做到这一点,因为每<input/>只能有一个值。我还没有对此进行测试,但如果你这样做了:

$('<input name="name1[]"/>').val($('input[name=name2]').val()).appendTo('form#foo');

基本上,您可以使用新值创建新的<input/>,然后在提交之前将其添加到表单中。

答案 1 :(得分:0)

如果我理解正确,您希望<input name="name2" />始终使用其他输入中包含的值进行更新。

如果是这种情况,你可以这样做:

$(function () {
  $('input[name^=name1]').on('input', function(e) {
    var txt = $('input[name^=name1]').map(function(index, element) {
      return this.value;
    }).get().join(', ');
    $('input[name="name2"]').val(txt);
  }).first().trigger('input');
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<form>
    <input name="name1[]" value="1"/><br>
    <input name="name1[]" value="2"/><br>
    <input name="name1[]" value="3"/><br>
    <input name="name2" /><br>
</form>

如果你需要相反的话:

$(function () {
  $('input[name="name2"]').on('input', function(e) {
    $('input[name^="name1"]').val(function(index, value) {
      return value + e.target.value;
    });
  });
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<form>
    <input name="name1[]" value="1"/><br>
    <input name="name1[]" value="2"/><br>
    <input name="name1[]" value="3"/><br>
    <input name="name2" />
</form>

答案 2 :(得分:0)

.val()与元素出现一起使用时,始终会考虑第一次出现。 要从同一组元素中提取多个值,您需要将.val()function

一起使用

参考:http://api.jquery.com/val/#val-function

$('input[name=name2]').val(function(index,value)
    {  
      $('input[name="name1[]"]').each(function()
       {
         value += $(this).val();
       });   
       return value;
    });

示例:https://jsfiddle.net/pgyLvx43/