Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

clayton-mer

preencher campos dinamico

Recommended Posts

Estou desenvolvendo uma lista de produtos e me deparei com o seguinte problema, tenho 4 campos produto, quantidade, valor unitario, valor total, no campo produto tem um autocomplete que busca no meu banco de dados e pega a lista do banco de dados e depois ele preenche os campos quantidade e valor unitario com os dados que vem via json do jquery.

 

o meu problema é o seguinte quando clico no botão add ele adiciona os campos o auto complete funciona mais não preenche os campos respectivos e coloca o mesmo conteudo nos dois campos, teria que preencher somente os campos quantidade e valor unitario ref a lista.

 

link do script http://ismcontrol.ismhost.com.br/auto.php

 

então o código que estou usando para preencher é

function(event, ui) { 	
$("input:text[id^='txtValorUnitario_']").val(ui.item.venda);	
$("input:text[id^='txtQuantidade_']").val('1');						                                          
},

Compartilhar este post


Link para o post
Compartilhar em outros sites

não use id, mas sim o this e então navegue no dom

 

parent, find...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais como usar o this porque são dois compo como vou itentificar para onde vai cada valor, pode dar um exemplo. desde já muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$("input:text[id^='txtProduto_']").live("focus.autocomplete", null, function () {
    var $parent = $(this).parent("li");
e ai qndo for preencher os campos:

 

function(event, ui) { 	
    $parent.find("input[name='valor']").val(ui.item.venda);	
    $parent.find("input[name='quantidade']").val('1');
},
entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ver se intendi Bruno tenho que trocar o código

$("input:text[id^='txtProduto_']").live("focus.autocomplete", null, function () {
        $(this).autocomplete({ 

por

$("input:text[id^='txtProduto_']").live("focus.autocomplete", null, function () {
    var $parent = $(this).parent("li");

depois onde está

function(event, ui) { 				 										 																     $("input:text[id^='txtValorUnitario_']").val(ui.item.venda);	
    $("input:text[id^='txtQuantidade_']").val('1');						                                          
 },

trocar por:

function(event, ui) { 	
    $parent.find("input[name='valor']").val(ui.item.venda);	
    $parent.find("input[name='quantidade']").val('1');
},

seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais ou menos.. o primeiro trecho ficaria:

 

$("input:text[id^='txtProduto_']").live("focus.autocomplete", null, function () {
    var $parent = $(this).parent("li");
    $(this).autocomplete({ 
E ai, vc tem q ir no html, e colocar o atributo name nos inputs, conforme esperado pelo js.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então mais dai vai ficar varios campos com mesmo nome como vou pegar essas dados depois do outro lado via post.

 

olha eu fiz como vc falou mais ao inves de colocar name eu coloquei assim

$parent.find("input:text[id^='txtValorUnitario_']").val(ui.item.venda);	
$parent.find("input:text[id^='txtQuantidade_']").val('1');       

e funcionaou.

 

agora vou tentar pegar para enserir no db.

 

olha ai pra vc ver se está correto:

http://ismcontrol.ismhost.com.br/auto.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão do name, bastava só fazer, com arrays:

 

$parent.find("input[name='valor[]']").val(ui.item.venda);
mas pare de duplicar IDs, isso ainda vai te dar grandes problemas e dores de cabeça.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.