Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/07/2011, 16:08
Avatar de perryjr
perryjr
 
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 4 meses
Puntos: 27
Respuesta: autocomplete <select>

Dos cosas muy rápidas: Usa Highlight para poner código en el foro, recibirás una respuesta mas rápida y los demás te lo agradeceran ;) Y Segundo, cierra las etiquetas <option>:

Código PHP:
Ver original
  1. echo "<option select value='$value'>$value</option>";

Corrígeme si me equivoco porque hace mucho que no uso jQuery Autocomplete, pero me da que no se debe usar sobre un select, esa no es su función. La función de un autocomplete es añadir a un <input type="text"/> más funcionalidad. Ej: La página de búsqueda de google, empiezas a teclear y sale sugerencias para autocompletar.

Es decir, el plugin lo que hace es cargar los datos, y luego el usuario empieza a teclear en el input, y le salen opciones entre las que puede elegir (aunque también puede decidir ignorarlas y teclear lo que quiera)

Para lo que pretendes hacer tienes dos opciones:

a) Hacerlo tu mismo
b) Encontrar otro plugin que te lo haga.

La opción a) así muy por encima:
Código Javascript:
Ver original
  1. $(function() {
  2.   // Cargando cosas:
  3.   $.getJSON('buscarproyectos.php', function(opciones) {
  4.     var items = [];
  5.     // Para cada cosa añado un nuevo elemento a la matriz «items»
  6.     $.each(opciones, function(key, val) {
  7.       var selected = // COMPROBAR SI ES EL ELEMENTO SELECCIONADO
  8.       var attr = selected ? ' selected="selected"' : '';
  9.       items.push('<option value="' + val + '"' + attr + '>' + val + '</option>');
  10.     });
  11.  
  12.     $('<select/>', {
  13.       html: items.join('') // junto todos los elementos de la matriz (sin dejar espacios entre ellos)
  14.     }).appendTo('body'); // añado el <select>...</select> al documento
  15.   });
  16. });

Código PHP:
Ver original
  1. $matriz = array();
  2.  
  3.   while($row=mysql_fetch_assoc($result)){  
  4.     $value = $row["pm_number"].", ".$row["pm_title"];
  5.     if (strpos(strtolower($value), $q) !== false) {
  6.       $id=$row["pm_id"];
  7.       //echo $id."##".$value."\n";
  8.       //echo "<option select value='$value'>$value";
  9.       $matriz[] = $value;
  10.      
  11.       // Pequeño truco, para diferenciar el elemento seleccionado, añado un elemento
  12.       // adicional más que me lo indique
  13.       $matriz['selected'] = $value;
  14.     }
  15.     else{
  16.       $matriz[] = $value
  17.       //echo "<option value='$value'>$value";
  18.     }
  19.   }
  20.   mysql_close($link);
  21.  
  22.   json_encode($matriz);
  23. }


Finalmente solo mencionarte que por falta de tiempo, te dejo como ejercicio añadirle a JavaScript el código necesario para comprobar el elemento selected.

Si tienes algún problema no dudes en volver a preguntar para que te ayudemos.
__________________
I (L) Google

Última edición por perryjr; 25/07/2011 a las 16:09 Razón: Se me colaron unas pequeñas BBcodes donde no debían =)