Foros del Web » Programando para Internet » Javascript »

Buscador

Estas en el tema de Buscador en el foro de Javascript en Foros del Web. Hola amigos no se si sea este el foro indicado, estoy teniendo un problemilla espero y me puedan dar sus aportes. resulta que estoy clonando ...
  #1 (permalink)  
Antiguo 20/09/2014, 20:32
Avatar de Sidus  
Fecha de Ingreso: enero-2014
Ubicación: Puebla
Mensajes: 32
Antigüedad: 10 años, 10 meses
Puntos: 1
Pregunta Buscador

Hola amigos no se si sea este el foro indicado, estoy teniendo un problemilla espero y me puedan dar sus aportes. resulta que estoy clonando inputs con jquery pero a su ves dentro de estos inputs tengo un buscador con ajax, hasta aca todo me va bien mi problema es que cuando agrego un segundo input no me funciona mi buscador les dejo mi codigo.

basicamente esto es lo que estoy clonando, en el div opciones muestro los resultados de la busqueda.
Código HTML:
Ver original
  1. <tr>
  2.             <td>
  3.               <div id="opciones"></div><input name="nombre[]" placeholder="Escribe el destinatario" size="50px" class="criterio" id="criterio" onkeyup="javascript:autocompletar()"/>
  4.              </td>
  5.             <td colspan="6">
  6.                 <select name="ccp[]">
  7.                     <option value="0">Selecciona una opcion</option>
  8.                     <option value="Para expediente personal">Para expediente personal</option>
  9.                 </select>
  10.             </td>
  11.             <td>
  12.                 <button type="button" class="btn remove_button">-</button>
  13.             </td>
  14.         </tr>
buscador.js
Código Javascript:
Ver original
  1. function autocompletar(){
  2.     criterio = document.getElementById('criterio').value;
  3.     url = "../directivos/busca_user.php?criterio="+criterio;
  4.    
  5.     completar.open("GET", url, true);
  6.     completar.onreadystatechange=function(){
  7.         if(completar.readyState==4){
  8.                 respuesta = completar.responseText;
  9.                 opciones = document.getElementById('opciones');
  10.                
  11.                 //hacer visible el div opciones y cargar el contenido de respuesta de autocompletar.php
  12.                 opciones.style.display='block';
  13.                 opciones.innerHTML = respuesta;
  14.                 //para que el div opciones no se muestre si no hay texto en criterio
  15.                 if(criterio==''){
  16.                     opciones.style.display = 'none';
  17.                 }
  18.         }
  19.     }
  20.     completar.send(null);
  21. }
  22.  
  23.  
  24. function reemplazar_criterio(texto){
  25.     document.getElementById('criterio').value=texto;
  26.     document.getElementById('opciones').style.display='none';
  27. }

busca_user.php
Código PHP:
Ver original
  1. if(isset($_GET["criterio"]) && $_GET["criterio"]!=""){
  2.    
  3.     $criterio = $_GET["criterio"];
  4.    
  5.     $sql = "select Encargado_area_dpto,Cargo_area_dpto from area_dpto where Encargado_area_dpto like '%".$criterio."%'";
  6.    
  7.     $query = mysql_query($sql, $conex);
  8.    
  9.     while($opcion=mysql_fetch_object($query)){
  10.         $url = "javascript:reemplazar_criterio('".$opcion->Encargado_area_dpto." | ".$opcion->Cargo_area_dpto."')";
  11.         echo '<a href="'.$url.'">'.$opcion->Encargado_area_dpto.'. .'.$opcion->Cargo_area_dpto.'</a>';
  12.     }
  13.    
  14. }

Gracias por sus aportes
  #2 (permalink)  
Antiguo 21/09/2014, 00:35
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Buscador

Imagino que debes de estar generando esas cajas de texto con algún bucle. Si fuera así, estarías cometiendo un error al asignar los mismos id a todos los elementos involucrados, recuerda que ese dato debe de ser único en todo el documento. Al tomar en la función el valor de la caja de texto con id 'criterio' y al tener más de una caja dicho id, solo tomará al valor de la primera de ellas.

Lo que debes de hacer es enviar el valor de cada caja de texto a la función, así no tendrás conflictos con las demás cajas pues ya estás enviando el valor.

En el evento onkeyup, debes de colocar esto: "autocompletar(this.value)".

Por cierto, el código que va dentro de los eventos como atributos de elementos HTML, ya es código JavaScript, por lo que no necesitas colocar el 'javascript:' adelante de la invocación a la función. No olvides modificar a la función 'autocompletar' para que pueda recibir correctamente el valor enviado. Tampoco olvides corregir lo de los id repetidos.

Saludos
__________________
«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: ajax, buscador, funcion, html, input, jquery, js, php, select
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 15:54.