Jquery autocomplete-custom html pour la liste des résultats

<!-Je me réfère à ce plugin:http://jqueryui.com/demos/autocomplete/

donc la structure originale pour les résultats est

<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all">
  <li class="ui-menu-item">
    <a class="ui-corner-all">item 1</a>
  </li>
  <li class="ui-menu-item">
    <a class="ui-corner-all">item 2</a>
  </li>
  <li class="ui-menu-item">
    <a class="ui-corner-all">item 3</a>
  </li>
</ul>

j'ai besoin de faire des liens à l'intérieur de ressembler à quelque chose comme ceci:

<a class="myclass" customattribute="something"> The item </a>

s'il vous Plaît ne me dites pas la seule solution pour modifier le plugin parce que je ne veux pas le même format pour tous les auto-complété sur le site.

24
demandé sur Tshepang 2011-10-13 01:14:05

3 réponses

Vous devez remplacer le _renderItem méthode (pour la saisie semi-automatique dans la question):

$("selector").autocomplete({ ... })
   .data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( "<a class='myclass' customattribute='" + item.customattribute + "'>" + item.label + "</a>" )
            .appendTo( ul );
   };

(en supposant le items dans votre source ont une propriété appelée customattribute)

Comme indiqué dans cet exemple: http://jqueryui.com/demos/autocomplete/#custom-data

40
répondu Andrew Whitaker 2011-10-12 21:18:59

Ceci est également documenté dans la documentation de jQuery-ui autocomplete à: Jquery-autocomplete.

Le truc, c'est:

  1. utilisez cette extension jquery:github
  2. puis en autocomplete option pass

    html:true
    
    ...autocomplete({
    ...
    html:true
    ...
    }
    

    );

  3. Maintenant vous pouvez passer html (comme

    sample
    ) dans le champ "label" de la sortie JSON pour autocomplete.

Si vous ne connaissez pas comment ajouter le plugin à JQuery puis:

  1. Enregistrer le plugin (extension html de Scott González) dans un fichier js ou télécharger le fichier js.
  2. vous avez déjà ajouté le script jQuery-ui autocomplete dans votre page html(ou le fichier jquery-ui js). Ajoutez ce script de plugin après que le fichier javascript autocomplete.

Date de publication: 28 juillet 2013

4
répondu Wasiq 2015-12-31 06:20:21

Vous pourriez essayer d'ajouter les attributs de l'événement "open":

$( ".selector" ).autocomplete({
    open: function(event, ui) {
        var jArrEl = $("a.ui-corner-all");
        jArrEl.addClass("myclass");
        jArrEl.attr("customattribute","something");
    }
});
3
répondu Galled 2011-10-12 21:22:52