Foros del Web » Programando para Internet » Jquery »

Autocompletar en controles dinamicos

Estas en el tema de Autocompletar en controles dinamicos en el foro de Jquery en Foros del Web. Hola, ojala me puedan ayudar, estoy asignando la funcion autocomplete de jquery a un input de esta manera: Primero extraigo la informacion de la bd: ...
  #1 (permalink)  
Antiguo 10/08/2017, 11:23
 
Fecha de Ingreso: agosto-2009
Ubicación: CHIHUAHUA
Mensajes: 15
Antigüedad: 14 años, 8 meses
Puntos: 0
Autocompletar en controles dinamicos

Hola, ojala me puedan ayudar, estoy asignando la funcion autocomplete de jquery a un input de esta manera:

Primero extraigo la informacion de la bd:

require_once('conexion.php');
class opciones_auto extends conexion
{
function opciones() {
$datos = array();
$telefonos = '';
$imsis = '';
parent::conectar();
$sql = "SELECT * FROM t_contactos";
$resultado = parent::query($sql);
while($fila = mysqli_fetch_assoc($resultado))
{
$telefonos .= '"' . $fila['numtel'] . '",';
$imsis .= '"' . $fila['imsi'] . '",';
}
parent::cerrar();
$datos[0] = $telefonos;
$datos[1] = $imsis;
return $datos;
}
}
$opc = new opciones_auto();
$opciones = $opc -> opciones();

aqui asigno la funcion autocomplete con el resultado de la consulta al input con id tb_ntel:

$(function() {
var availableTags1 = [<?php echo $opciones[0] ?>];
$( "#tb_ntel" ).autocomplete({
source: availableTags1
});
} );

tengo un boton con el que creo inputs dinamicos, "lista_contactos" es la tabla donde se encuentran los inputs existentes y los inputs que se van a agregar:

<input type="button" value="Agregar" id="btnAdd" onclick="addRow('lista_contactos');"/>

La funcion addRow tiene esto:

function addRow(tableID) {
if (tableID == "lista_contactos")
{
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
.
.
.
var element11 = document.createElement("input");
element11.type = "text";
element11.setAttribute("name","tb_ntel[]");
element11.setAttribute("id","tb_ntel");

cell4.appendChild(element11);
.
.
.
}
}

Como podria asignarle la funcion de autocomplete a los controles que se crean a traves de la funcion addRow???? ya probe cambiandoles el id y no funciona, por favor podrian ayudarme??
  #2 (permalink)  
Antiguo 13/08/2017, 00:27
 
Fecha de Ingreso: agosto-2011
Mensajes: 87
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Autocompletar en controles dinamicos

ID = es único, por lo tanto debe existir una sola vez en el DOM, algo asi como tu cedula en tu país (es único para poder identificarte o referirse a ti), deberias de usar CLASS

como tus inputs son creados dinamicamente usa .on() de jquery



Código HTML:
$(".tb_ntel").on('click',function(){

$(this).autocomplete();

);
a ver si te funciona
__________________
No le pare bola a la vida, que la vida no le para bolas a uno!
  #3 (permalink)  
Antiguo 16/08/2017, 17:24
 
Fecha de Ingreso: agosto-2009
Ubicación: CHIHUAHUA
Mensajes: 15
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Autocompletar en controles dinamicos

pero el evento se debe generar al dar click en el boton y la accion se debe ejecutar en el control dinamico
  #4 (permalink)  
Antiguo 17/08/2017, 00:10
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Autocompletar en controles dinamicos

Puedes asignar el widget autocomplete en tiempo real al elemento recién creado.

Código Javascript:
Ver original
  1. function addRow(tableID){
  2.     //Instrucciones
  3.    
  4.     $(element11).autocomplete({source: availableTags1});
  5.  
  6.     //Más instrucciones
  7. }

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: controles, dinamicos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:08.