Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal
Estou com um código de autocomplete, com consulta de banco de dados em asp, certinho funcionando filé, eu implementei ele em um sistema de pedidos, ontem o vendedor digita o nome do item, e clicando ele preenche o formulário, até ai ta tudo joia, estou refazendo o formulário para que ele tenha como adicionar mais inputs, como o autocomplete ele precisa de cada id de cada input, ele acaba ficando grande, gostaria de saber se tem como fazer um while ou um for, para que ele repita o script do autocomplete, tentei dessa forma e ele não funciona....
>
<script type="text/javascript">
var i = 0;
do{
$(document).ready(function(){
//Ao digitar executar essa função
$("#prod").focus().autocomplete("completa.asp",{
minChars: 1 //Número mínimo de caracteres para aparecer a lista
, matchContains: true //Aparecer somente os que tem relação ao valor digitado
, scrollHeight: 220 //Altura da lista dos nomes
, selectFirst: true //Vim o primeiro da lista selecionado
, mustMatch: false //Caso não existir na lista, remover o valor
, delay: 0 //Tempo para aparecer a lista para 0, por padrão vem 200
});
//Quando selecionar valor pegar retorno. O retorno nesse caso são: Nome|Código
$("#prod").result(function(event, retorno) {
if (retorno==undefined)
$("#preco").val("");$("#preco").val(retorno[1]);
if (retorno==undefined)
$("#prazo").val("");$("#prazo").val(retorno[2]);
if (retorno==undefined)
$("#embalagem").val("");$("#embalagem").val(retorno[3]);
if (retorno==undefined)
$("#valora").val(""); var primeiroNum = parseFloat(retorno[1].replace(",","."));
var segundoNum = parseFloat(retorno[3].replace(",","."));
var resp = primeiroNum/segundoNum;
var numero2casas = resp.toFixed(2); //aumenta as casas
$("#valora").val(numero2casas.replace(".",","));
if (retorno==undefined)
$("#valorp").val("");
else
var primeiroNum = parseFloat(retorno[2].replace(",","."));
var segundoNum = parseFloat(retorno[3].replace(",","."));
var resp = primeiroNum/segundoNum;
var numero2casas = resp.toFixed(2); //aumenta as casas
$("#valorp").val(numero2casas.replace(".",","));
});
});
i++;
}while(i <= 10);
</script>
Porem não repete ele mais vezes no caso fixei um numero 10 para teste
Agora caso queira as 10, tenho que copiar o mesmo codigo e deixar fixado o numero nos id (#prod0) (#prod1).
Teria alguma forma mais simples de fazer isso?
Obrigado
Muito obrigado William, irei atrás disso.
Consegui fazer com que ele ativasse o autocomplete do produtos, porém o problema é que sempre que gero uma nova consulta(do autocomplete), ele substitui os valores resgatados pela ultima consulta, e em um só input, que estou testando, como poderia colocar sempre em um determinado input? Ex:
Input 1 :
[ Produto ] Embalagem: [ Embalagem]
Input 2 :
[ Produto ] Embalagem: [ Embalagem]
Se eu consulto no 2, o valor da embalagem muda na primeira e não na segunda, estou usando class para os inputs do produto, e class para a embalagem.
Codigo
>
<script type="text/javascript">
$(document).ready(function(){
//Ao digitar executar essa função
$( ".produto" ).focus().autocomplete("completa_consulta.asp",{
minChars: 1 //Número mínimo de caracteres para aparecer a lista
, matchContains: true //Aparecer somente os que tem relação ao valor digitado
, scrollHeight: 100 //Altura da lista dos nomes
, selectFirst: true //Vim o primeiro da lista selecionado
, mustMatch: false //Caso não existir na lista, remover o valor
, delay: 0 //Tempo para aparecer a lista para 0, por padrão vem 200
});
$(".produto").result(function(event, retorno) {
if (retorno==undefined)
$("#embalagem").val("");
else
$("#embalagem").val(retorno[3]);
if (retorno==undefined)
$("#precoavista").val("");
else
$("#precoavista").val(retorno[1]);
});
});
</script>
Esse html esta em um for
>
<tr class="center">
<td></td>
<td class="center">
<input name="produto<%=i%>" class="produto" id="produto" type="text" style="width: 280px; height: 20px;"/>
</td>
<td class="center">
<input name="precokga" id="precokga" type="text" style="width: 50px; height: 20px;" />
</td>
<td class="center" style="width: 120px">
<input name="precoavista" id="precoavista" type="text" style="width: 50px; height: 20px;" />
</td>
<td class="center">
<input name="precokgp" id="precokgp" type="text" style="width: 50px; height: 20px;" />
</td>
<td class="center" style="width: 120px">
<input name="precoaprazo" id="precoaprazo" type="text" style="width: 50px; height: 20px;" />
</td>
<td class="center">
<input name="embalagem" class="embalagem" id="embalagem"type="text" style="width: 50px; height: 20px;" />
</td>
<td class="center">
<input name="quantidade" id="quantidade" type="text" style="width: 40px; height: 20px;" />
</td>
<td></td>
</tr>Tenta assim:
<script type="text/javascript">
$(document).ready(function(){
//Ao digitar executar essa função
$( ".produto" ).focus().autocomplete("completa_consulta.asp",{
minChars: 1 //Número mínimo de caracteres para aparecer a lista
, matchContains: true //Aparecer somente os que tem relação ao valor digitado
, scrollHeight: 100 //Altura da lista dos nomes
, selectFirst: true //Vim o primeiro da lista selecionado
, mustMatch: false //Caso não existir na lista, remover o valor
, delay: 0 //Tempo para aparecer a lista para 0, por padrão vem 200
});
$(".produto").result(function(event, retorno) {
var $parent = $(this).parents('tr');
if (retorno==undefined) {
$parent.find('input[name="precoavista"]').val("");
$parent.find('input[name="embalagem"]').val("");
}
else {
$parent.find('input[name="precoavista"]').val(retorno[1]);
$parent.find('input[name="embalagem"]').val(retorno[3]);
}
});
});
</script>Nossa funcionou perfeito!! Como poderia agradecer com a sua ajuda? Fiquei a tarde inteira testando e não saia do lugar rs.
A melhor forma de agradecer é tentar ajudar outra pessoa.
Veja os tópicos ainda não resolvidos, e se vc souber, responda lá. :lol:
Opa pode deixar, no que puder ajudarei, assim aprendo, e também passo o pouco que conheço, fico agradecido contigo William!
Hum.. o auto complete "não precisa de um ID para cada input".. vc pode trabalhar com classes e navegar no DOM.
Ai não tem loop e nem IDs.