2016-05-19 3 views
0

Ich arbeite an einem Update-Formular, das Preis in einem Eingabefeld nehmen sollte und aktualisieren Sie es in ein Array mit der ID als die eindeutige ID. Das Problem damit, dass der letzte Preis aktualisiert wird, überschreibt den vorherigen festgelegten Preis.Javascript Array Update-Feld, Einstellung Wert für jedes Element in Array

<input placeholder="None" class="price" id="114157"> 
<input placeholder="None" class="price" id="114158"> 
<input placeholder="None" class="price" id="114159"> 

Die Javascript

var objects = {}; 

var array_list = {'price':false, 'tue_price':false, 'view': false, 'cinema': false, 'id': false, 'kids_price': false, 'free_seating': false, 'vip_consetions': false}; 
$(".price").change(function() { 
    var id = $(this).attr('id'); 
    if (objects[id]) { 
     objects[id]['price'] = $(this).val(); 
    }else{ 
     objects[id] = array_list; 
     objects[id]['price'] = $(this).val(); 
     objects[id]['id'] = $('.price[id='+id+']').val(); 
    } 
    console.log(objects); 
}); 

Ich habe hier ein Beispiel Geige Setup: https://jsfiddle.net/natcdgkq/

+0

Weil es immer auf die gleiche Objektreferenz zeigt. Also werden 'Objekte [ID]' immer auf das gleiche Objekt zeigen. –

+0

@EvanTrimboli tatsächlich in der Geige habe ich unterschiedliche Eingabefeld mit verschiedenen IDs –

+0

@EvanTrimboli Ich habe die Frage aktualisiert es erstellt neue 'Array_list' setzen Sie den Preis für die neue und alle alten sind auf die gleiche Nummer gesetzt –

Antwort

0

Das Problem ist, dass Sie nur eine einzige Kopie des Objekts array_list (schlechten Namen) haben. Jedes Mal, wenn Sie es zuweisen und den Wert ändern, ist es immer dieselbe Objektreferenz. Sie könnten das tun, was im Wesentlichen eine Kopie ist:

var objects = {}; 

var array_list = { 
    'price': false, 
    'tue_price': false, 
    'view': false, 
    'cinema': false, 
    'id': false, 
    'kids_price': false, 
    'free_seating': false, 
    'vip_consetions': false 
}; 

$(".price").change(function() { 
    var id = $(this).attr('id'), 
     o = objects[id]; 
    if (!o) { 
     objects[id] = o = jQuery.extend({}, array_list); 
    } 
    o.price = $(this).val(); 
}); 

ich den Teil über die ID weggelassen, die wirklich nicht viel Sinn machen. Sie haben bereits das Objekt, nach dem Sie suchen möchten.

Verwandte Themen