如何从输入创建数组?

时间:2015-04-14 11:45:44

标签: javascript jquery html arrays input

我创建了相乘的输入字段:

<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])
}

我没有成功获得此代码中的数组。我该如何解决?

3 个答案:

答案 0 :(得分:1)

你有一些错误。

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

    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

    Haven没有显示所有条件。修正了它。

答案 1 :(得分:0)

使用$(this).data('index')代替this.data-index

答案 2 :(得分:0)

您可以使用单个数组处理此问题:

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 );
});