Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/10/2012, 15:27
Avatar de satjaen
satjaen
 
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 3 meses
Puntos: 10
Respuesta: Recuperar datos de autocompletar en campos de texto independientes

Pongo tambien el ajax:

Código Javascript:
Ver original
  1. (function($){
  2.     $.fn.autosugguest = function(config) {
  3.  
  4.         var defaults = {
  5.             className: 'suggest',
  6.        methodType: 'POST',
  7.             addParams: null,
  8.                rtnIDs: false,
  9.              dataFile: 'data_ajax.php',
  10.              minChars:  3,
  11.              fadeTime:  100
  12.           };
  13.  
  14.         var config = $.extend(defaults, config);
  15.  
  16.         config.addParams = (config.addParams != '') ? '&' + config.addParams : '';
  17.  
  18.         $('<div class="ausu-suggestionsBox"><img src="images/arrow.png" /><ul></ul></div>').appendTo('.' + config.className);
  19.         $(".ausu-suggestionsBox > ul li").live('mouseover', function()
  20.         {
  21.             var sel = $(this).parent().find("li[class='selected']").removeClass('selected');
  22.                 $(this).addClass('selected');
  23.             });
  24.  
  25.         $("." + config.className + " > input").keyup(function(event)
  26.         {
  27.            var fieldParent = $(this).parents('div.' + config.className);
  28.  
  29.            if (event.which != 39 && event.which != 37 && event.which != 38 && event.which != 40 && event.which != 13 && event.which != 9 ) {
  30.  
  31.                 fieldVal = fieldParent.find('input:eq(0)').val();
  32.                 suggest(fieldVal,this.id);
  33.            } else {
  34.  
  35.              var fieldChild  = fieldParent.find('.ausu-suggestionsBox > ul');
  36.  
  37.              switch (event.which)
  38.                 {
  39.                  case 40: { keyEvent(fieldChild,'next');break; }
  40.                  case 38: { keyEvent(fieldChild,'prev');break; }
  41.                  case 13:
  42.                  {
  43.                         fieldParent.children('input:eq(0)').val($("li[class='selected'] a").text());
  44.                         if (config.rtnIDs==true) fieldParent.children('input:eq(1)').val($("li[class='selected']").attr("id"));
  45.                         fieldParent.children('div.ausu-suggestionsBox').hide();
  46.                         return false;
  47.                         break;
  48.                  }
  49.                  case 9:
  50.                  {
  51.                         offFocus(this); $("li").removeClass("selected");
  52.                         break;
  53.                  }
  54.              }
  55.          }
  56.         });
  57.  
  58.         $("." + config.className).bind("keypress",function(event){
  59.             if (event.keyCode == 13) return false;
  60.         });
  61.  
  62.         $("." + config.className + " > input").live("blur", function(){ offFocus(this); $("li").removeClass("selected"); });
  63.  
  64.         function suggest(dataInput, id)
  65.         {
  66.             if(dataInput.length < config.minChars) {
  67.                     $('#'+id).parent('.' + config.className).children('div.ausu-suggestionsBox').fadeOut();
  68.             } else {
  69.             $('#' + id + ":eq(0)").addClass('ausu-load');
  70.                 $.ajax({
  71.                    type: config.methodType,
  72.                     url: config.dataFile,
  73.                dataType: "html",
  74.                    data: "data=" + dataInput + "&id=" + id + config.addParams,
  75.                 success: function(data){
  76.                     if(data.length >0)
  77.                     {
  78.                         $('#'+id).parent('div.' + config.className).children('div.ausu-suggestionsBox').fadeIn();
  79.                         $('#'+id).parent('div.' + config.className).find('.ausu-suggestionsBox > ul').html(data);
  80.                         $('#'+ id + ":eq(0)").removeClass('ausu-load');
  81.                     }
  82.                     else
  83.                         $('#' + id + ":eq(0)").removeClass('ausu-load');
  84.                 }
  85.               });
  86.             }
  87.         }
  88.  
  89.         function keyEvent (fieldChild,action)
  90.         {
  91.             yx = 0;
  92.             fieldChild.find("li").each(function(){
  93.                 if($(this).attr("class") == "selected")
  94.                 yx = 1;
  95.             });
  96.             if(yx == 1)
  97.             {
  98.                 var sel = fieldChild.find("li[class='selected']");
  99.                 (action=='next') ? sel.next().addClass("selected") : sel.prev().addClass("selected");
  100.                 sel.removeClass("selected");
  101.             }
  102.             else
  103.                 (action=='next') ? fieldChild.find("li:first").addClass("selected") : fieldChild.find("li:last").addClass("selected");
  104.         }
  105.  
  106.         function offFocus(fieldChild)
  107.         {
  108.             var fieldParent =  $(fieldChild).parents('div.' + config.className);
  109.             fieldParent.children('div.ausu-suggestionsBox').delay(config.fadeTime).fadeOut();
  110.         }
  111.  
  112.         $(".ausu-suggestionsBox > ul li").live("click", function()
  113.         {
  114.             var fieldParent = $(this).parents('div.' + config.className);
  115.             fieldParent.children('input:eq(0)').val($(this).text());
  116.             if (config.rtnIDs==true) fieldParent.children('input:eq(1)').val($(this).attr("id"));
  117.             fieldParent.children('div.ausu-suggestionsBox').hide();
  118.         });
  119.  
  120.     };
  121. })(jQuery);
Saludos