Subversion Repositories wimsdev

Rev

Rev 6939 | Rev 10454 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1.  
  2. /********* Autocomplete.js  ************************************************************************
  3.     Autocompletion d'un champ texte
  4.     ajoutez la classe "multicomplete" ou "autocomplete" au choix sur l'input, selon que vous
  5.     souhaitez autoriser un ou plusieurs mot-cles.
  6.     Puis lancez set_multicomplete, ou set_autocomplete avec la liste des mots cles en parametre
  7. ****************************************************************************************************/
  8.  
  9.  
  10. function comma_split( val ) {
  11.   return val.split( /,\s*/ );
  12. }
  13.  
  14. function extractLast( term ) {
  15.   return comma_split( term ).pop();
  16. }
  17.  
  18. function set_multicomplete(tags){
  19.   $(".multicomplete")
  20.     // don't navigate away from the field on tab when selecting an item
  21.     .bind( "keydown", function( event ) {
  22.       if (event.keyCode === $.ui.keyCode.TAB &&  $( this ).data( "ui-autocomplete" ).menu.active ) {
  23.         event.preventDefault();
  24.       }
  25.     })
  26.     //Adds Autocompletion
  27.     .autocomplete({
  28.       focus: function() {
  29.         // prevent value inserted on focus
  30.         return false;
  31.       },
  32.       source: function( request, response ) {
  33.         // delegate back to autocomplete, but extract the last term
  34.         response( $.ui.autocomplete.filter(tags, extractLast( request.term ) ) );
  35.       },
  36.       select: function( event, ui ) {
  37.         var terms = comma_split( this.value );
  38.         // remove the current input
  39.         terms.pop();
  40.         // add the selected item
  41.         terms.push( ui.item.value );
  42.         // add placeholder to get the comma-and-space at the end
  43.         terms.push("");
  44.         this.value = terms.join(", ");
  45.         return false;
  46.       }
  47.     });
  48. }
  49.  
  50. function set_autocomplete(tags){
  51.     $(".autocomplete").autocomplete({
  52.         source: function( request, response ) {
  53.             var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
  54.             response( $.grep( tags, function( item ){
  55.                   return matcher.test( item );
  56.             }) );
  57.         }
  58.     });
  59. }
  60.