【问题标题】:How to create an array from inputs?如何从输入创建数组?
【发布时间】:2015-04-14 11:45:43
【问题描述】:

我创建了多个输入字段:

<div class="form-text-field first-name field-group">
    <input data-index="1" type="text" id="firstName1" class="signup-input firstName" name="first[1]" placeholder="">
</div>
<div class="form-text-field email field-group">
    <input type="text" data-index="1" id="inputMail1" class="signup-input text-value ignore" name="email[1]"  placeholder="${message(code:"signup.redesign.placeholder.eg.email")}"/>
    <span class="common-sprite disNone sign-up-cross first clone"></span>
</div>

我在 JS 文件中有一个代码可以克隆每个输入。

我必须从输入的值创建数组(一个用于电子邮件,一个用于名字)。

函数如下:

var arrEmail = []
var arrName = []
function add() {
    var obj = {};
    var partner = {}
    $('.email input[type="text"]').each(function() {
        obj[this.data-index] = this.value;
    });
    arrEmail.push(obj)
    $('.first-name input[type="text"]').each(function() {
        partner[this.data-index] = this.value;
    });
    arrName.push(partner)
    console.log(arrEmail[0])
}

我没有成功获取这段代码中的数组。我该如何解决?

【问题讨论】:

  • 标识符不能有减号,尽量使用$(this).data('index');
  • 使用$(this).data('index')$(this).attr('data-index')
  • 你可以像arrEmail = $('.email input[type="text"], .first-name input[type="text"]').map(function({ return $(this).val(); }).get();这样使用地图
  • 你需要数组索引吗?为什么不将元素推送到数组?喜欢$('.email input[type="text"]').each(function(){ arrEmail.push($(this).val()); });

标签: javascript jquery html arrays input


【解决方案1】:

你有一些错误。

  1. $('.email input[type="text"]').each(function({ 行中的语法错误。您忘记关闭括号了。
  2. 我不明白您为什么尝试以这种奇怪的方式获取价值。你包括了 jQuery。使用它!

我修复了你的代码。

var arrEmail = [];
var arrName = [];

function add() {
    var obj = {};
    var partner = {};
    $('.email input[type="text"]').each(function(item) {
        obj[$(this).data('index')] = $(this).val();
    });
    arrEmail.push(obj);

    $('.first-name input[type="text"]').each(function() {
        obj[$(this).data('index')] = $(this).val();
    });
    arrName.push(obj);

    console.log(arrEmail);
    console.log(arrName);
}

$('#test').on('click', add);

jsFiddle demo

更新 #1

未显示所有条件。修好了。

【讨论】:

    【解决方案2】:

    使用$(this).data('index') 而不是this.data-index

    【讨论】:

      【解决方案3】:

      你可以用一个数组来处理这个问题:

      var myUsers= [];//this might be object that you store the user information
      
      $('.first-name input[type="text"]').each(function(item) {
          //first create the user information
          var myUser = new Object();
          myUser.Username = $(this).val();
          myUser.Email= $(this).next().val();
      
          //then add the user information to the myUsers array
           myUsers.push(myUser );
      });
      

      【讨论】:

        猜你喜欢
        • 2022-01-25
        • 2016-12-18
        • 2014-11-06
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 2013-08-04
        • 2016-01-10
        相关资源
        最近更新 更多