Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estou desenvolvendo uma aplicação bastante prática, utilizando o jQuery com PHP e MySQL.
Vou tentar explicar a questão: na primeira versão, o autocomplete buscava pela descrição do produto.
Agora, o autocomplete buscará pelo código, preenchendo automaticamente o input txt com a descrição referente.
A questão é que eu tenho um arquivo usr.php para 13 compradores e cada um possui um número diferente de produtos que deve dar entrada. Para a definição do número de campos, estou usando o
for ($i=1; $i<=5; $i++){
onde 5 é o número de linhas da tabela de cada comprador.
Por padrão, o autocomplete do jQuery busca referência de entrada a partir do id do input. Na primeira versão eu troquei o id ("#" que é único) por classe de estilo ("." que é referencial e permite multiplicidade) e assim não precisei usar um for() para cada linha da tabela de cada comprador.
O problema é que agora tentei o mesmo workaround e qdo o autocomplete busca os resultados, ele preenche TODOS os campos da tabela de forma igual hehehe. Abaixo vou postar o momento em que parei: utilizando o ID do input, mas que só ativa o autocomplete, obviamente, na primeira linha da tabela.
resumo do usr.php
<script type="text/javascript">
$(document).ready(function(){
var ac_config = {
source: "ac-src.php",
select: function(event, ui){
$("#codigo").val(ui.item.codigo);
$("#descricao").val(ui.item.descricao);
return false;
},
minLength:1
};
$("#codigo").autocomplete(ac_config);
});
</script>
<body bgcolor="#ffffff">
<br />
<br />
<form name="form<?php echo $usr; ?>" method="post" action="s.php?usr=<?php echo $usr; ?>">
<table>
<?php
if ($usr == '08'){
for ($i=1; $i<=5; $i++) {
$r = mysql_query("SELECT * FROM descricao_teste WHERE descricao_teste.ID='$i'") or die(mysql_error());
$arr = mysql_fetch_array($r);
echo"<tr>";
echo"<td><input class=\"ui-widget\" type=\"text\" name=\"COD_PAI_".$i."\" size=\"5\" value=\"".$arr['COD_PAI']."\" maxlength=\"7\" id=\"codigo\" /></td>";
echo"<td><input class=\"ui-widget\" type=\"text\" name=\"DESCRICAO_".$i."\" size=\"35\" value=\"".$arr['DESCRICAO']."\" id=\"descricao\" /></td>";
}
}
?>
resumo do ac-src.php
<?php
$q = "SELECT * FROM descricao WHERE descricao.COD_PAI IS NOT NULL";
$r = mysql_query($q) or die(mysql_error());
$codigos = array();
while($arr = mysql_fetch_array($r)) {
$cod_pai = $arr['COD_PAI'];
$descricao = $arr['DESCRICAO_PRODUTO'];
$mount_arr = array("codigo" => "$cod_pai", descricao => "$descricao");
$codigos[] = $mount_arr;
}
$term = trim(strip_tags($_GET['term']));
$matches = array();
foreach($codigos as $codigo){
if(stripos($codigo['codigo'], $term) !== false){
$codigo['value'] = $codigo['codigo'];
$codigo['label'] = "{$codigo['codigo']}";
$matches[] = $codigo;
}
}
$matches = array_slice($matches, 0, 10);
print json_encode($matches);
?>
Então... o que eu preciso é saber: se o número de linhas é variável, como posso fazer para que o autocomplete prencha apenas uma linha de cada vez?
Valeu galera!!!
Carregando comentários...