2011-07-15 16 views
5

solo me gustaría preguntar sobre la adición de datos en una matriz. Pero los datos que quería poner es de una tabla de cuadros de entrada .. Aquí está el código que he estado practicando para obtener datos:cómo agregar los valores de entrada en una matriz

http://jsfiddle.net/yajeig/4Nr9m/69/

tengo un botón añadir que cada vez Hago clic en ese botón, almacenará datos en la variable my_data.

quiero producir una salida en mi variable de algo como esto:

my_data = [ {plank:"1",thickness:"4",width:"6",length:"8",qty:"1",brdFt:"16"}] 

y si yo añadiría otros datos más, que se sumará en esa variable y ser algo como esto:

my_data = [ {plank:"1",thickness:"4",width:"6",length:"8",qty:"1",brdFt:"16"}, 
    {plank:"2",thickness:"5",width:"6",length:"2",qty:"1",brdFt:"50"}] 

el código que tengo ahora es realmente malo, así que por favor ayuda.

Actualmente mi producción: 1,4,6,4,1

+0

Fiddles que el spam con un montón de las alertas de carga son molestas. – ThiefMaster

Respuesta

1

usted debería ser capaz de iterar sobre todos los cuadros de texto utilizando la siguiente:

function add(e) { 
    var obj = {}; 

    $('#addItem input[type="text"]') 
     .each(function(){obj[this.name] = this.value;}); 
    myItems.push(obj); 
} 

Donde myItems es un contenedor global para sus artículos y #addItem es su formulario.

Actualizado jsfiddle.

Si usa un formulario y un botón de envío, entonces debería poder implementar un método que no sea de JavaScript para agregar su información, de modo que el sitio esté accesible para personas sin JavaScript habilitado.

+0

muy agradable. Funciona en gran medida, pero me pregunto cómo obtener ese '" Test ":" "' y deshacerme de él .. – jayAnn

+0

@jayAnn: He actualizado mi respuesta para iterar sobre cada cuadro de texto en el formulario.Debe producir el resultado que desee. JsFiddle también se ha actualizado. – detaylor

+0

gracias por un código tan maravilloso ... :) Esto realmente ayuda. – jayAnn

0

iterar a través de todas las claves, y añadir los valores. (código escrito de la mente, no probado)

var added = { }; 
for (var i = 0; i < my_data.length; i ++) { 
    var json = my_data[i]; 
    for (var key in json) { 
    if (json.hasOwnProperty(key)) { 
     if (key in added) { 
     added[key] += json[key]; 
     } else { 
     added[key] = json[key]; 
     } 
    } 
    } 
} 
0

Puede utilizar the javascript array push function:

var data = [{plank:"1",thickness:"4",width:"6",length:"8",qty:"1",brdFt:"16"}]; 

var to_add = [{plank:"2",thickness:"5",width:"6",length:"2",qty:"1",brdFt:"50"}]; 

data = data.concat(to_add); 
+0

gracias por la respuesta, pero todavía no puedo usarlo porque todavía no sé cómo hacerlo desde mi salida como json. Tal vez voy a usar este una vez que pueda tener una salida json. El resultado que tengo actualmente es '1,4,6,4,1'. – jayAnn

0

Lo siento, solo eché un vistazo a las otras soluciones.

$(document).ready(function() { 
var myData=[]; 
    var myObject = {} 
     $("input").each(function() { 
      myObject[this.id]=this.value 
     }); 
    alert(myObject["plank"]) 
    myData.push(myObject) 
}); 
1

Prueba esto, lo siento por la modificación de su forma, pero funciona bien:

HTML:

<form method="post" action="#" id="add_plank_form"> 
    <p><label for="plank_number">Plank number</label> 
    <p><input type="text" name="plank_number" id="plank_number"/></p> 

    <p><label for="plank_width">Width</label> 
    <p><input type="text" name="plank_width" id="plank_width"/></p> 

    <p><label for="plank_length">Length</label> 
    <p><input type="text" name="plank_length" id="plank_length"/></p> 

    <p><label for="plank_thickness">Thickness</label> 
    <p><input type="text" name="plank_thickness" id="plank_thickness"/></p> 

    <p><label for="plank_quantity">Quantity</label> 
    <p><input type="text" name="plank_quantity" id="plank_quantity"/></p> 

    <p><input type="submit" value="Add"/> 
</form> 

<p id="add_plank_result"></p> 

Javascript:

$(document).ready(function() { 

    var plank_data = Array(); 

    $('#add_plank_form').submit(function() { 

     // Checking data 
     $('#add_plank_form input[type="text"]').each(function() { 
      if(isNaN(parseInt($(this).val()))) { 
       return false; 
      } 
     }); 

     var added_data = Array(); 
     added_data.push(parseInt($('#plank_number').val())); 
     added_data.push(parseInt($('#plank_width').val())); 
     added_data.push(parseInt($('#plank_length').val())); 
     added_data.push(parseInt($('#plank_thickness').val())); 
     added_data.push(parseInt($('#plank_quantity').val())); 

     $('#add_plank_form input[type="text"]').val(''); 

     plank_data.push(added_data); 

     // alert(JSON.stringify(plank_data)); 

     // compute L x W x F for each plank data 
     var computed_values = Array(); 
     $('#add_plank_result').html(''); 
     for(var i=0; i<plank_data.length; i++) { 
      computed_values.push(plank_data[i][1] * plank_data[i][2] * plank_data[i][3]/12); 
      $('#add_plank_result').append('<input type="text" name="plank_add[]" value="' + computed_values[i] + '"/>'); 
     } 

     return false; 
    }); 
}); 
+0

Oye, gracias tu la respuesta. Realmente funciona ... – jayAnn

+0

pero me preguntaba cómo agregar un cuadro de entrada con un valor de un resultado de los datos anteriores. Quiero tener el pie de tabla al final del extremo, que se calcula como 'l x w x f/12'. Estaba en este problema en este momento – jayAnn

+0

¿Cómo calcular el valor si hay varias tablas de información en la matriz? Quiero decir, si los datos son '[{1, 2, 3, 4, 5}, {7, 8, 9, 4, 4}]', el valor calculado será '[2, 24]'? –

Cuestiones relacionadas