2012-06-03 12 views
5

¿Hay alguna manera de decirle a jQuery UI Autocompletar qué índices de matriz JSON usar como 'etiqueta' y 'valor' cuando esos no son los nombres de índice utilizados en la matriz JSON?jQuery UI Autocompletar: Cuéntelo Mi 'Etiqueta' y 'Valor'

El Aray que contiene mis valores de búsqueda se ve así (como registrado por Firebug):

[ Object { id="12", name="Don Davis" }, Object { id="17", name="Stan Smith" } ] 

quiero usar 'id' como la 'etiqueta' y 'nombre' como el 'valor', pero puedo No descubra cómo decir el objeto de configuración.

Mi matriz está contenida en una variable local, no se realiza ninguna llamada Ajax.

Esta response responde a otra pregunta y resuelve el problema creando un formulario oculto, pero parece que hay una manera más clara de manejarlo.

+0

Yu puede hacer lo que quiera si usa una función como el parámetro "fuente". –

Respuesta

7

De la lectura de los Jquery UI documentos se puede intentar algo como esto:

<script> 
    $(function() { 
var projects = [ { id: "12",value: "Don Davis" }, { id: "17", value:"Stan Smith" } ] 

    $("#project").autocomplete({ 
     minLength: 0, 
     source: projects, 
     focus: function(event, ui) { 
      $("#project").val(ui.item.value); 
      return false; 
     }, 
     select: function(event, ui) { 
      $("#project").val(ui.item.value); 
      $("#project-id").val(ui.item.id); 

      return false; 
     }, 
     search: function(event, ui) { console.log(event); console.log(ui) } 
    }) 
    .data("autocomplete")._renderItem = function(ul, item) { 
     return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append("<a>" + item.value+"</a>") 
      .appendTo(ul); 
    }; 
});​ 
    </script> 
+0

Gracias - la demostración de documentos también usa el campo oculto para 'id' (como en su campo # project-id), así que supongo que es la manera oficialmente admitida para hacerlo, aparte de ajustar directamente los índices de matriz JSON. De esta manera probablemente funcionaría mejor. Gracias de nuevo. – cantera

+0

Tenga en cuenta que en jquery-ui 1.11 (y posiblemente antes), 'data (" autocompletar ")' debe ser 'data (" uiAutocomplete ")' –

-1

Debe devolver una matriz de esta manera: (PHP del lado del servidor)

for(...){
$suggest = array('value'=>$value,'label'=>$label); }

Cuestiones relacionadas