2010-12-13 92 views

Répondre

2

Le moyen le plus simple consiste à étendre la saisie semi-automatique de l'interface jQuery avec votre propre fonction _renderMenu.

http://jqueryui.com/demos/autocomplete/#default

html:

<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags"> 
</div> 

jQuery:

$(function() { //DOM Ready 
    var availableTags = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "BASIC", 
     "C", 
     "C++", 
     "Clojure", 
     "COBOL", 
     "ColdFusion", 
     "Erlang", 
     "Fortran", 
     "Groovy", 
     "Haskell", 
     "Java", 
     "JavaScript", 
     "Lisp", 
     "Perl", 
     "PHP", 
     "Python", 
     "Ruby", 
     "Scala", 
     "Scheme"]; 

    $.widget("custom.customcomplete", $.ui.autocomplete, { 
     // our fancy new _renderMenu function adds the header and footers! 
     _renderMenu: function(ul, items) { 
      var self = this; 
      $.each(items, function(index, item) { 
       if (index == 0) 
        ul.append('<li><input type="checkbox"> I\'m at the top! Choose me!</li>'); 
       self._renderItem(ul, item); 
       if(index == items.length - 1) 
        ul.append('<li><input type="checkbox"> I\'m at the bottom! Choose me!</li>'); 
      }); 
     } 
    }); 

    // note the new 'widget', extended from autocomplete above 
    $("#tags").customcomplete({ 
     source: availableTags 
    }); 

}); 

Voir un exemple de travail ici: http://jsfiddle.net/kJUdt/

+0

Grande réponse, m'a vraiment beaucoup aidé un grand merci – LenPopLilly

+0

que je propose utiliser les opérateurs append/prepend au lieu de "si" et "vérifier la longueur": '_renderMenu: fonction (ul, items) { var that = this; ul.prepend ('

  • Je suis en haut! Choisissez moi!
  • '); $ .each (éléments, fonction (index, élément) { that._renderItemData (ul, item); }); ul.append ('
  • Je suis en bas! Choisissez moi!
  • '); }, ' –