Here is the function to get the value of the table row, and pass to inputs, if I take the lines that were loaded from the bank not the error but when I insert a new item in the table, then I get the value of 2 column of the line, in the test alert
it displays normal text but when I step into the inputs, the fields merge, I have never seen anything like it, the input description appears with array inside.
<br /><label for="resultDescricao">Descrição do item</label>
<input type="text" id="resultDescricao" name="resultDescricao" readonly >
<br /><br /><label>Modelo:</label>
<input type="text" id="modelo" onchange="montarDescricao()" style="text-transform: uppercase; display: inline-block" onkeyup="montarDescricao()">
<br /><br /><label for="obs_item">Obs:</label>
<input type="text" name="obs_item" id="obs_item" onchange="montarDescricao()" style="text-transform: uppercase; display: inline-block" onkeyup="montarDescricao()">
<br />
<label for="obs" ></label>
<input type="hidden" id="obs" name="obs">
<br /><label for = "medida">Medida:</label>
<input type = "text" id = "medida" onchange = "montarDescricao()" placeholder="0,00" style = "text-transform: lowercase; display: inline-block" onkeyup = "montarDescricao()">
<br /><br /><label for="bracoesq">Braço esq.:</label>
<input type="text" id="bracoesq" onchange="montarDescricao()" style="text-transform: uppercase" onkeyup="montarDescricao()">
<br /><label for="modulo">Módulo</label>
<input type="text" name="modulo" id="modulo" onchange = "montarDescricao()" placeholder="2x0,00"style = "text-transform: lowercase; display: inline-block" onkeyup = "montarDescricao()">
<br /><br /><label for="bracodir">Braço dir.:</label>
<input type="text" id="bracodir" onchange="montarDescricao()" style="text-transform: uppercase" onkeyup="montarDescricao()">
<label for="revestimento">Revestimento</label>
<select name="revestimento" id="revestimento" class="revestimento" onChange="montarDescricao()">
<option value=""> Selecione um Revestimento</option>
<?php foreach ($revestimento_list as $rl): ?>
<option value="<?php echo $rl['id'] ?>"><?php echo $rl['nomedesc']; ?></option>
<?php endforeach; ?>
</select><br />
<br /><label for="vlr_unitario">Vlr. unitário</label>
<input type="text" name="vlr_unitario" value="R$ 0,00" id="vlr_unitario" data-prefix="R$ " class="dinheiro" >
<br /><label for="qtde">Qtde</label>
<input type="number" name="qtde" id="qtde" onkeyup="so_numero(this)" value="1" min="1" >
<br /><br /><label for="num_modulos">Qtde módulos</label>
<input type="number" name="num_modulos" id="num_modulos" value="2" min="1" />
<input type="button" onclick="addProd()" id="add_prod" value="adicionar produto" style="background-color: #faac58"/>
<br />
<input type="text" name="json_prod" id="json_prod">
<?php
endforeach;
?>
</fieldset>
</fieldset>
<table border="0" width="100%" id="products_table">
<thead>
<tr>
<th>ID</th>
<th>Nome do Produto</th>
<th>Quant.</th>
<th>Módulos</th>
<th>Obs.</th>
<th>Preço Unit.</th>
<th>Sub-Total</th>
<th class="acoes">Ações</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
function pegar_valor_linha_tabela_editar(elemento) {
var id = $(elemento).closest('tr').find('td').eq('0').text().trim(); // recebe id
var descricao = $(elemento).closest('tr').find('td').eq('1').html(); // recebe descriçao completa
var qtde = $('input[name="quant[' + id + ']"]').val().trim(); // recebe quantidade
var num_modulos = $(elemento).closest('tr').find('td').eq('3').text().trim(); // recebe numero de modulos
var obs_item = $(elemento).closest('tr').find('td').eq('4').text().trim(); // recebe observacao
var vlr_unitario = $(elemento).closest('tr').find('td').eq('5').text().trim(); // recebe valor unitario
OBJ = $(elemento).closest("tr"); //recebe objeto da linha
if (id === 0) {
return;
} else {
$('#id').val(id);
//inicio quebra descriçao
//aqui e coluna 2 da tabela eu pego e divico essas descrição
var descricaoArray = descricao.split('[');
var modelo = descricaoArray[0].trim();
var medida = descricaoArray[1].trim();
var bracoesq = descricaoArray[2].trim();
var modulo = descricaoArray[3].trim();
var bracodir = descricaoArray[4].trim();
var revestimento = descricaoArray[5].split(']');
//fim do quebra descrição
$('#resultDescricao').val(descricao);
$('#modelo').val(modelo);
$('#medida').val(medida.replace(']', ''));
$('#bracoesq').val(bracoesq.replace(']', '').replace('BRE', ''));
$('#modulo').val(modulo.replace(']', ''));
$('#bracodir').val(bracodir.replace(']', '').replace('BRD', ''));
$('#revestimento option:contains(' + revestimento[0] + ')').prop('selected', true);
$('#obs_item').val($.trim(obs_item));
$('#vlr_unitario').val(vlr_unitario.replace(' ', ''));
$('#qtde').val($('input[name="quant[' + id + ']"]').val());
$('#num_modulos').val(num_modulos);
excluirProd(elemento);
}
}
Description template
// CALIFORNIA [2,90] [BRE25] [3x80] [BRD25] [ARTIGO: 1.000 - COR: 02] - COM MAIS PUXES
When the error
// 3 [CALIFORNIA [2,90] [BRE25] [3x80] [BRD25] [ARTIGO: 1.000 - COR: 02]] [BRE] [ 2] [BRD ] [ R$ 0,00]
Measured field
// CALIFORNIA [2,90] [BRE25] [3x80] [BRD25] [ARTIGO: 1.000 - COR: 02]
Even in alert
showing that the data is being passed to the inputs correctly, it displayed everything wrong, I have never seen this variable take value without being declared
Function to add products
function addProd() {
if ($('#modelo').val() === '') {
alert('Informe um Modelo !');
return;
}
if ($('#revestimento').val() === '') {
alert('Selecione um Revestimento !');
return;
}
if ($('#num_modulos').val() === '') {
alert('Selecione a Quantidade de Módulos !');
return;
}
if ($('#bracoesq').val() === '') {
alert('Informe a medida Braço Esquerdo !');
return;
}
if ($('#bracodir').val() === '') {
alert('Informe a medida Braço Direito !');
return;
}
var products_table = document.getElementById('products_table');
var id = products_table.rows.length;
var name = document.getElementById('resultDescricao').value;
var price = document.getElementById('vlr_unitario').value.replace(/[ R|$|.]/gi, '').replace(/[,]/gi, '.');
var qtde = document.getElementById('qtde').value;
var num_modulos = document.getElementById('num_modulos').value;
var obs_item = document.getElementById('obs_item').value;
subtotal = price * parseInt(qtde);
subtotal = ("R$ " + number_format(subtotal, 2, ',', '.'));
price = ("R$ " + number_format(price, 2, ',', '.'));
incluir_produto();
document.getElementById('resultDescricao').value = "";
document.getElementById('modelo').value = "";
document.getElementById('vlr_unitario').value = 'R$0,00';
document.getElementById('bracoesq').value = "";
document.getElementById('bracodir').value = "";
$("#revestimento").val($("#revestimento option:first").val());
document.getElementById('qtde').value = "1";
document.getElementById('medida').value = "";
document.getElementById('modulo').value = "";
document.getElementById('obs_item').value = "";
if ($('input[name="quant[' + id + ']"]').length !== 0) {
id = parseInt(id) + 1;
}
if ($('#id').val() != '') {
var tr =
'<tr class="classeDaLinha" id="r'+id+'">' +
'<td class="id" id="id" >' + id + '</td>' +
'<td class="name">' + name + '</td>' +
'<td class="qtde" >' +
'<input style="width:50px;" type="number" name="quant[' + id + ']" id="quant[' + id + ']" class="p_quant" value="' + qtde + '" onkeyup="updateSubtotal(this)" onchange="updateSubtotal(this)" data-price="' + price + '" />' +
'</td>' +
'<td class="num_modulos"> ' + num_modulos + '</td>' +
'<td class="obs_item"> ' + obs_item + '</td>' +
'<td class="price"> ' + price + '</td>' +
'<td class="subtotal">' + subtotal + '</td>' +
'<td><img src="' + BASE_URL + '/assets/images/delete.png" width="20" height="20" title="Delete" onclick="excluirProd(this)"/>\n\
<img src="' + BASE_URL + '/assets/images/edit.png" width="20" height="20" title="Editar" onclick="pegar_valor_linha_tabela_editar(this)"/></td>' +
'</tr>';
OBJ.prev().after(tr); //colocar o novo tr antes deste
OBJ.remove();
var contador = 1;
$(".classeDaLinha").each(function () {
$(this).find("#id").html(contador);
$(this).find(".p_quant").prop("name", "quant[" + contador + "]");
contador++;
});
$(OBJ).closest('tr').show();
$('#id').val('');
} else {
var tr =
'<tr class="classeDaLinha">' +
'<td class="id" id="id" >' + id + '</td>' +
'<td class="name">' + name + '</td>' +
'<td class="qtde" >' +
'<input style="width:50px;" type="number" name="quant[' + id + ']" id="quant[' + id + ']" class="p_quant" value="' + qtde + '" onkeyup="updateSubtotal(this)" onchange="updateSubtotal(this)" data-price="' + price + '" />' +
'</td>' +
'<td class="num_modulos"> ' + num_modulos + '</td>' +
'<td class="obs_item"> ' + obs_item + '</td>' +
'<td class="price"> ' + price + '</td>' +
'<td class="subtotal">' + subtotal + '</td>' +
'<td class="acoes"><img src="' + BASE_URL + '/assets/images/delete.png" width="20" height="20" title="Delete" onclick="excluirProd(this)"/>\n\
<img src="' + BASE_URL + '/assets/images/edit.png" width="20" height="20" title="Editar" onclick="pegar_valor_linha_tabela_editar(this)"/></td>' +
'</tr>';
$('#products_table tbody').append(tr);
}
updateTotal();
preencherJason();
}
Here request to load the items of the bank and create the lines
function carregar_itens_pedido(id_pedido)
{
$.ajax
({
type: 'POST',
dataType: 'json',
url: BASE_URL + '/pedidos/carregar_itens_pedido',
data: {id_pedido: id_pedido},
success: function (arrayRetorno)
{
$("#products_table tbody").empty();
tr = "";
for (var index in arrayRetorno) {
subTotal = arrayRetorno[index].vlr_unitario * arrayRetorno[index].vlr_unitario.qt;
id = arrayRetorno[index].id;
num_sofa = arrayRetorno[index].num_sofa;
name = arrayRetorno[index].nomedesc;
price = arrayRetorno[index].vlr_unitario;
qtde = arrayRetorno[index].qt;
num_modulos = arrayRetorno[index].num_modulos;
obs_item = arrayRetorno[index].obs_item;
subtotal = price * qtde;
subtotal = ("R$ " + number_format(subtotal, 2, ',', '.'));
price = ("R$ " + number_format(price, 2, ',', '.'));
if (qtde === null) {
qtde = '';
}
tr += '<tr class="classeDaLinha" >' +
'<td class="id" id="id">' + id + '</td>' +
'<td class="name">' + name + '</td>' +
'<td class="qtde" >' +
'<input style="width:50px;" type="number" name="quant[' + id + ']" id="quant[' + id + ']" class="p_quant" value="' + qtde + '" onkeyup="updateSubtotal(this)" onchange="updateSubtotal(this)" data-price="' + price + '" />' +
'</td>' +
'<td class="num_modulos"> ' + num_modulos + '</td>' +
'<td class="obs_item"> ' + obs_item + '</td>' +
'<td style="width:100px;" class="price"> ' + price + '</td>' +
'<td style="width:100px;" class="subtotal">' + subtotal + '</td>' +
'<td class="acoes"><img src="' + BASE_URL + '/assets/images/delete.png" width="20" height="20" title="Delete" onclick="excluirProd(this)"/>\n\
<img src="' + BASE_URL + '/assets/images/edit.png" width="20" height="20" title="Editar" onclick="pegar_valor_linha_tabela_editar(this)"/></td>' +
'</tr>';
}
$('#products_table tbody').append(tr);
updateTotal();
preencherJason();
}
});
}