I have the following code that fetches the product and creates the row in the table the way I want it and then stores the data in a Json to be sent per post.
Only works when I insert a new product. But I needed to store Json whenever I tagged a checkbox that I create with jquery. But I'm not finding the command that does this. I've tried all kinds of commands. I even test the console to show a message when I click on the checkbox, but it does not show any messages. Can someone help me on how to capture the change in the checkbox?
I've tried $( "input[type=checkbox]" ).on( "click", armazenarCampos);
but it does not update.
The code that generates the table follows:
var codigo = $("#codigo_barras");
codigo.on("keydown",function(e){
if(e.which == 13) {
e.preventDefault();
$.get("controle/pedido-troca-pendente-busca-produto.php?codigo="+codigo.val(),geraLinha);
}
});
function geraLinha(data){
var produto = jQuery.parseJSON(data);
if(produto.id_produto!=0){
var linha = $("<tr>").addClass("linha");
var colunaProduto = $("<td>").text(produto.produto);
var colunaTamanho = $("<td>").text(produto.tamanho);
var colunaPreco = $("<td>").text(produto.preco);
var colunaUsuario = $("<td>").text(produto.usuario);
var colunaDefeito = $("<td>");
var colunaRemove = $("<td>");
var campoIdProduto = $("<input>").addClass("id_produto").attr("type","hidden").attr("value",produto.id_produto);
var campoTamanho = $("<input>").addClass("tamanho").attr("type","hidden").attr("value",produto.tamanho);
var campoPreco = $("<input>").addClass("preco").attr("type","hidden").attr("value",produto.preco);
var campoTipoCobranca =$("<input>").addClass("tipo_cobranca").attr("type","hidden").attr("value",produto.tipo_cobranca);
var campoIdTabela = $("<input>").addClass("id_tabela").attr("type","hidden").attr("value",produto.id_tabela);
var campoDefeito = $("<input>").addClass("defeito").attr("type","checkbox").attr("value","true");
var link = $("<a>").addClass("botao-remover").addClass("btn").addClass("btn-danger").addClass("glyphicon").addClass("glyphicon-trash").attr("href","#");
colunaDefeito.append(campoDefeito);
colunaRemove.append(link);
linha.append(colunaProduto);
linha.append(colunaTamanho);
linha.append(colunaPreco);
linha.append(colunaUsuario);
linha.append(colunaDefeito);
linha.append(colunaRemove);
linha.append(campoIdProduto);
linha.append(campoTamanho);
linha.append(campoPreco);
linha.append(campoTipoCobranca);
linha.append(campoIdTabela);
$("#troca-pendente").append(linha);
codigo.val("");
}else{
$("#erro").toggle();
setTimeout(function(){
$("#erro").toggle();
},2000);
}
armazenarCampos();
}
function armazenarCampos() {
if($('.linha').length>0){
var produtos = [];
$('.linha').each(function(){
var id_produto = $(this).find(".id_produto").val();
var tamanho = $(this).find(".tamanho").val();
var preco = $(this).find(".preco").val();
var tipo_cobranca = $(this).find(".tipo_cobranca").val();
var id_tabela = $(this).find(".id_tabela").val();
if($(this).find("input:checked").val()){
var defeito = 1;
}else{
var defeito = 0;
}
var produto = {
id_produto:id_produto,
tamanho:tamanho,
preco:preco,
tipo_cobranca:tipo_cobranca,
id_tabela:id_tabela,
defeito:defeito
};
produtos.push(produto);
});
$("#produtos-troca").attr("name","produtos-troca").attr("value",JSON.stringify(produtos));
}
}
html generated by jquery:
<tbody id="troca-pendente">
<tr class="linha">
<td>165 Caramelo</td>
<td>34</td>
<td>39.90</td>
<td>Admin</td>
<td><input class="defeito" type="checkbox" value="true"></td>
<td><a class="botao-remover btn btn-danger glyphicon glyphicon-
trash" href="#"></a></td>
<input class="id_produto" type="hidden" value="7">
<input class="tamanho" type="hidden" value="34"><input class="preco"
type="hidden" value="39.90">
<input class="tipo_cobranca" type="hidden" value="1">
<input class="id_tabela" type="hidden" value="3">
</tr>
<tr class="linha">
<td>01 Preto</td>
<td>38</td>
<td>39.90</td>
<td>Admin</td>
<td><input class="defeito" type="checkbox" value="true"></td>
<td><a class="botao-remover btn btn-danger glyphicon glyphicon-
trash" href="#"></a></td>
<input class="id_produto" type="hidden" value="8">
<input class="tamanho" type="hidden" value="38">
<input class="preco" type="hidden" value="39.90">
<input class="tipo_cobranca" type="hidden" value="1">
<input class="id_tabela" type="hidden" value="3">
</tr>
</tbody>