0
I got the code from a user here who posted (add/remove array to an Hidden input), added a few things and even tried to modify how users who responded suggested, but could not remove the value array from the removed product.
var strong = $('#total'),
total = 0.00;
prod_array = []; // Array de produtos
$('#add_produto').on('click', function () {
var table = $('#cesta_produtos tbody'), // Tabela de produtos
list = $('#lista_produtos').html(), // Select com a lista de produtos
quant = parseInt($('#mudeValor').val()), // Campo com a quantidade de produtos
preco = parseFloat($('#preco').val()),
// Link para remover o produto
input_hidden = $('#products_array');
preco = preco * quant;
preco = parseFloat(preco.toFixed(2));
// Remove a mensagem de cesta vazia depois que produto é adicionado
$('#cesta_vazia').remove();
// Insere o produto selecionado no select list dentro da tabela
table.append("<tr><td>" + quant + "</td><td>x</td><td>" + list + "</td><td>R$ </td><td>" + preco + "</td><td><a href='#' class='del_produto'><i><strong>X</strong></i></a></td></tr>");
prod_array.push("[" + quant + "]" + "[" + list + "]");
input_hidden.val(prod_array);
console.log("novo produto adicionado :)");
console.log(input_hidden.val());
strong = $('#total'),
total = total + preco;
total = parseFloat(total.toFixed(2));
$('#totalold').remove();
strong.append("<strong id='totalold'>" + total + "</strong>");
});
// Remoção de produtos da tabela
$(document).on('click', '.del_produto', function (e) {
e.preventDefault();
var tr = $(this).closest('tr'); //seleciona a tr
var quant = tr.find('td').eq(0).html(); // seleciona a quantidade
var list = tr.find('td').eq(2).html(); // seleciona o produto
strong = $('#total'),
total = total - preco;
total = parseFloat(total.toFixed(2));
$('#totalold').remove();
strong.append("<strong id='totalold'>" + total + "</strong>");
//procura a posição no array
var index = prod_array.indexOf("[" + quant + "]" + "[" + list + "]");
prod_array.splice(index, 2);//remove do array
tr.remove(); //remove a linha
console.log("produto removido :(");
console.log(prod_array);
});
puts a
console.log(index);
at the end and see what value returns. You may not be finding the string in the array.– Sam
Man, he recognizes the position the array starts, the two array are equal, the problem is in splice(), he is not removing.
– JeffNog
This is unequivocal:
array = ['red','blue','gray']; index = array.indexOf('blue'); array.splice(index,2);
'. The result of the array will be:array=['red'];
. Therefore, it is important to check whether theindex
is returning to the correct position inprod_array.indexOf("[" + quant + "]" + "[" + list + "]");
. It is more consistent to assume that there is some error in your code than to say that thesplice
is not working.– Sam