2011-11-07 30 views
5

Sto usando jQuery completamento automatico che sto popolando da un rubino sulla applicazione Rails e sto creando un autcomplete personalizzato in questo modo:JQuery completamento automatico - Selezionare prima voce

$.widget("custom.code_complete", $.ui.autocomplete, { 
    _renderMenu: function(ul, items) { 
      var self = this, 
       currentCategory = ""; 
     $ul = ul; 
      $.each(items, function(index, item) { 
       if (item.category != currentCategory) { 
        ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>"); 
        currentCategory = item.category; 
       } 
       self._renderItem(ul, item); 
      }); 
     } 
    }); 

    $("#r-code").code_complete({ 
    source: "URL", 
    minLength: 2, 
    select: function(event, ui) { 
     $(".button-row").fadeIn(); 
     get_details(ui.item.url); 
    } 
    }); 

sto reindirizzamento a un utente di un'altra pagina a la pagina con il modulo di completamento automatico con un parametro nell'URL, che è un codice utilizzato per la ricerca, ecco il JS per fare la ricerca:

function ac_search(code) { 
    $("#r-code").val(code); 
    $("#r-code").code_complete('search', code); 
} 

Questa esegue la ricerca perfettamente e visualizza l'elenco a discesa dei risultati verso il basso . Sto cercando di fare in modo che lo script selezioni il primo risultato nell'elenco. Ho provato a farlo tramite un selettore:

$(".ui-menu-item:first a").click(); 

Ciò trova l'elemento corretto nell'elenco di completamento automatico, ma quando cerco di simulare un clic su di esso dà questo errore:

TypeError: ui.item is null 

E 'possibile a livello di codice fai clic sul primo elemento nell'elenco dei risultati del completamento automatico?

Acclamazioni

Eef

risposta

15

uso messa a fuoco automatica: true

$(el).autocomplete({ 
     autoFocus: true 
     ... 
}); 
+0

non si ha realmente bisogno di questa estensione quando si può semplicemente impostare l'opzione messa a fuoco automatica come vero. – Ziad

19
$(el).autocomplete({ 
    autoFocus: true 
}); 
Problemi correlati