2010-12-06 3 views
1

Ich habe den folgenden Code für meine Auto-Vervollständigungen auf meinem Formular für eine Weile verwendet, aber nach der Aktualisierung von jquery ui auf Version 1.8.6 von 1.8rc3 es hat die Formatierung der JSONP-Rückgabe abgebrochen. Die zurückgegebenen Daten sind nicht mehr in HTML formatiert, sondern es handelt sich um eine Zeichenfolge. Irgendwelche Ideen?Jquery UI Autocomplete Ajax JSONP Rückkehr ist in JQ UI Version 1.8.6

Update: JS Fiddle enthalten, mit dem jQuery UI-Demo und html in den Daten

http://jsfiddle.net/blowsie/ejLPg/

$("#companyname").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       url: turl, 
       dataType: "jsonp", 
       data: { 
        maxRows: 9, 
        name_startsWith: request.term 
       }, 
       success: function (data) { 
        response($.map(data, function (item) { 
         return { 
          label: "<span class='ui-menu-item-title'>" + item.name.toLowerCase() + "</span><span class='ui-menu-item-subtitle'>" + item.address1.toLowerCase() + '&nbsp;' + item.post_code.toLowerCase() + '</span>', 
          value: item.name_id 
         } 
        })) 
       } 
      }) 
     }, 
     minLength: 3, 
     delay: 50, 
     select: function (event, ui) { 
      LoadGivenCompany(ui.item.value); 
     }, 
     open: function() { 
      $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
     }, 
     close: function() { 
      $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
     }, 
     focus: function() { return false } 
    }); 

alt text

Vielen Dank im Voraus

Antwort

1

Schaltet mithilfe des .data() aus, nach der die automatische Vervollständigung können Sie die Daten zu formatieren

$(function() { 
function log(message) { 
    $("<div/>").text(message).prependTo("#log"); 
    $("#log").attr("scrollTop", 0); 
} 

$("#city").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "http://ws.geonames.org/searchJSON", 
      dataType: "jsonp", 
      data: { 
       featureClass: "P", 
       style: "full", 
       maxRows: 12, 
       name_startsWith: request.term 
      }, 
      success: function(data) { 
       response($.map(data.geonames, function(item) { 
        return { 
         label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, 
         value: item.name, 
         test: 'hahahah' 
        } 
       })); 
      } 
     }); 
    }, 
    minLength: 2, 
    select: function(event, ui) { 
     log(ui.item ? "Selected: " + ui.item.label : "Nothing selected, input was " + this.value); 
    }, 
    open: function() { 
     $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
    }, 
    close: function() { 
     $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
    } 
})  
.data("autocomplete")._renderItem = function(ul, item) { 
     return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append("<a>" + item.label + "<br>" + item.test + "</a>") 
      .appendTo(ul); 
    }; 
}); 

http://jsfiddle.net/blowsie/ejLPg/3

1

ich in die aussah Quellcode der automatischen Vervollständigung der Version 1.8.6 und herausgefunden, dass Artikel cre ation verwendet anstelle der HTML-Methode eine Textmethode. Sie schlagen bei jQuery.ui vor, den Stil zu ändern, indem Sie den Themenroller verwenden, indem Sie die widgetspezifischen Klassen in der CSS-Datei ändern. Siehe Autocomplete#theming.

Was ich tun würde, ist den Ort zu finden, dass sie den Text im Element schieben und den Methodenaufruf zurück zu HTML ändern und es austesten.

+0

das ist ziemlich gute Beratung durch, altough ich denke Rolle aswell kann die jquery Version zurück , Ich dachte nur, ich könnte etwas falsch machen, ich war überrascht, ich konnte niemand anderes mit dem gleichen Problem finden. – Blowsie