2016-03-20 14 views
0

Ich habe folgende HTML-Code:jQuery - Erstellen eines Arrays von Objekten enthält key - Wertepaare

<div class="input_data"> 
    <input type="text" name = 'firstname' class="fname"> 
    <input type="text" name = 'lastname' class="lname"> 
</div> 
<br> 
<br> 
<div class="input_data"> 
    <input type="text" name = 'firstname'class="fname"> 
    <input type="text" name = 'lastname' class="lname"> 
</div> 
<button id="sbmt">Submit</button> 

Ich versuche, die Paare von Saiten von den Eingängen als Objekt in einer jQuery Array durch die folgenden zuzuweisen Code:

$('#sbmt').on('click', function() { 

    var this_row = {}; 
    //var all_rows = []; 

    $('.input_data').each(function(){ 

     $('> input', this).each(function(){ 

      //this_row[$(this).attr('name')] = $(this).val(); 
      //this_row.push($(this).attr('name')) = $(this).val(); 
      keyvalue = $(this).attr('name'); 
      namevalue = $(this).val(); 
      alert(keyvalue + " is : " + namevalue); 
      this_row[keyvalue] = namevalue; 
      //all_rows.push({$(this).attr('name'):$(this).val()}); 
     }); 

    }); 

Wie Sie sehen, habe ich die Aussagen mit ALL_ROWS kommentiert gehalten haben - tatsächlich wird es Fehler geben, dass die Verwendung von „this“ hier nicht legal ist.

Dazu speichert der Code in seiner aktuellen Form nur die Werte aus dem zweiten Satz von Eingängen.

Ich brauche eigentlich eine Reihe von Objekten wie

[{firstname:firstname-1, lastname:lastname-1}, {firstname:firstname-2, lastname:lastname:2}] 

Wie kann ich das passieren zu generieren? Außerdem würde ich gerne wissen, wie man die Aussage all_rows.push({$(this).attr('name'):$(this).val()}); funktioniert.

Antwort

2

Sie brauchen so etwas wie dieses:

$('#sbmt').on('click', function() { 

    var all_rows = []; 

    $('.input_data').each(function() { 
      var this_row={}; 
      $(this).find("input").each(function(){ 

      keyvalue = $(this).attr('name'); 
      namevalue = $(this).val(); 
      this_row[keyvalue] = namevalue; 
     }); 
     all_rows.push(this_row); 

    }); 
    console.log(all_rows); 
    }); 

https://jsfiddle.net/9kxxwz0n/

+0

Vielen Dank für Ihre Anregungen Vasyl. aber das Problem besteht weiterhin - das Array zeigt nur die letzten Rogen der Eingaben ... –

+0

Ich führe diesen Code einfach von jsfiddle und mache einen kleinen Screenshot. In all_rows bestehen alle vier Eingabewerte aus zwei Zeilen. Screenshot: http://www.zimagez.com/miniature/screenshot-20032016-071511.php –

+0

Vasyl - Es tut mir leid - ich habe einen Fehler gemacht. Es funktioniert genau so, wie ich es möchte. Danke vielmals..!! –

Verwandte Themen