[Resolvido] jQuery Autocomplete em campos dinâmicos

legion

Power Member
Boa noite,

Precisava de uma ajuda. Basicamente, tenho uma função em js que me adiciona uma linha numa tabela dinamicamente (quando carregamos para adicionar esta mesma) e estou a usar o plugin de jQuery Autocomplete para que quando escreva nos inputs criados dinamicamente, estes sejam auto-sugestivos.

Aqui vai o código:

JS que adiciona a linha à tabela:

PHP:
			function addRow(tableID) {

				var table = document.getElementById(tableID);

				var rowCount = table.rows.length;
				var row = table.insertRow(rowCount);

				var colCount = table.rows[0].cells.length;

				for(var i=0; i<colCount; i++) {

					var newcell	= row.insertCell(i);

					newcell.innerHTML = table.rows[0].cells[i].innerHTML;
					//alert(newcell.childNodes);
					switch(newcell.childNodes[0].type) {
						case "text":
								newcell.childNodes[0].value = "";
								break;
						case "checkbox":
								newcell.childNodes[0].checked = false;
								break;
						case "select-one":
								newcell.childNodes[0].selectedIndex = 0;
								break;
					}
				}
			}

Código HTML:

PHP:
<TABLE id="dataTable" width="600px" border="1" style="margin-left:-60px">
	<TR>	
		<TD><INPUT type="text" name="txt[]" id="txt"/></TD>
	</TR>
</TABLE>
<br />
<INPUT type="button" value="Adicionar Viatura" onclick="addRow('dataTable')" />
<INPUT type="button" value="Remover Viatura" onclick="deleteRow('dataTable')" />

Código js que utilizo para o Autocomplete:

PHP:
$().ready(function() {
		$("input[name^=txt]").autocomplete("get_cols_name.php", {
			width: 260,
			matchContains: true,
			selectFirst: false
		});
	});

Eu por defeito tenho uma linha da tabela, onde tenho um input . Nesse input, o Autocomplete funciona sem problemas..mas, se depois adicionar uma nova linha, no input dessa nova linha, o AutoComplete deixa de funcionar.

PS: Os id's e name's dos inputs são iguais..

Será que me poderiam ajudar? Terá a ver com alguma coisa de carregar todos os elementos e depois o jQuery não "ler" a nova linha?

Obrigado por qualquer sugestão.

cumprimentos
 
Última edição:
só uma coisa, estou a ver que estás a utilizar javascript puro + jquery.
porque é que não migras o teu javascript puro para jquery ?

cumps ;)
 
só uma coisa, estou a ver que estás a utilizar javascript puro + jquery.
porque é que não migras o teu javascript puro para jquery ?

cumps ;)

Sim, seria bastante interessante. Alguma dica para conseguir fazer isso com jQuery, ainda n me desenrasco muito bem com esta framework. :P

cump's
 
não conheço a sintaxe jquery mas acho que é assim:

deixo-te um exemplo

var table = document.getElementById(tableID);

passa a ser

var table = $(tableId);

cumps ;)
 
Aqui estou eu novamente. Após ter feito a função em jQuery para introduzir uma nova linha na tabela,

PHP:
  			$(document).ready(function() {
  			  var destTable = $("#dataTable2");
  			  $("#btnAdd").click(function() {
  			   var newRow = $("<tr><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt2[]' id='txt'/></td></tr>");
  			   $("#dataTable2").append(newRow);
  			  });
			});

Não consigo fazer agora com que o autocomplete funcione nestes inputs.

Preciso de uma ajuda nisto, se possível.

EDIT: Basicamente, os inputs adicionados dinamicamente não são "reconhecidos" pela função do Autocomplete. Há algum modo de dar a volta a isto?

Obrigado
 
Última edição:
Só para fazer bump e dizer que resolvi este problema. Aqui fica o código:

PHP:
	<SCRIPT language="javascript">
			$(document).ready(function() {
  			  var destTable = $("#dataTable");
  			  $("#btnAdd").click(function() {
  			   var newRow = $("<tr><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td></tr>");
  			   $("#dataTable").append(newRow);
			  	newRow.find('input').autocomplete("get_cols_name.php", {
					width: 260,
					matchContains: true,
					selectFirst: false
					});
  			  	});
			});
	</SCRIPT>

Basicamente o que faz, por cada linha nova adicionada o autocomplete fica "associado" a este input. Andei a inventar um bocadinho (baseando-me em vários exemplos)..mas consegui.

cump's
 
Última edição:
Olá. Bom dia. Como ficou este código no final?? Estou tentando produzir algo mas minha cabeça não conseguiu pensar em nada óbvio.....
Preciso de um "input autocomplete dinâmico" e parece que vc conseguiu.... poderia compartilhar o código completo??
 
Back
Topo