jQuery UI Autocomplete a cessé de fonctionner
-
29-09-2019 - |
Question
Pour une raison quelconque de saisie semi-automatique jQuery UI a cessé de travailler pour moi. Je reçois la même erreur que celle décrite sur cette page .
J'ai copié le contenu de la requête de cette page Web ci-dessous, en espérant que quelqu'un ici sera en mesure de répondre.
Merci!
J'utilise Jquery UI Autocomplete
pour obtenir une liste de noms. Mais pour une raison quelconque, je reçois une erreur:
$('#repName').removeAttr('readonly').focus(function () { $(this).val(''); }).autocomplete({ source: function (request, response) { tagId = $('#TagId').val(); $.ajax({ url: '/Developement/GetRepName', type: 'POST', dataType: 'json', data: { searchText: request.term, maxResults: 10, tagId: tagId }, success: function (data) { response($.map(data, function (item) { return { label: item.Name, value: item.RepId, id: item.RepId } })) } }) }, select: function (event, ui) { commissionAllicationModifications(ui.item.id, 0, 'A'); } });
Je n'ai aucune idée pourquoi cela se passe. J'utilise l'interface utilisateur JQuery 1.8.1.
J'apprécierait tout type d'aide à ce sujet.
Il provient du fichier jQuery UI 1.8.1, spécifiquement Autocomplete jQuery UI 1.8.1.
.menu({ focus: function (event, ui) { var item = ui.item.data("item.autocomplete"); if (false !== self._trigger("focus", null, { item: item })) { // use value to match what will end up in the input, if it was a key event if (/^key/.test(event.originalEvent.type)) { self.element.val(item.value); } } }, selected: function (event, ui) { var item = ui.item.data("item.autocomplete"); if (false !== self._trigger("select", event, { item: item })) { self.element.val(item.value); } self.close(event); // only trigger when focus was lost (click on menu) var previous = self.previous; if (self.element[0] !== doc.activeElement) { self.element.focus(); self.previous = previous; } self.selectedItem = item; }, * blur: function (event, ui) { * if (self.menu.element.is(":visible")) { * self.element.val(self.term); * } * } }) .zIndex(this.element.zIndex() + 1) // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781 .css({ top: 0, left: 0 }) .hide() .data("menu");
Il est étrange que parce que cela fonctionne parfaitement dans un autre projet. Ce que je remarqué est lorsque le code frappe la section [vedette] la section self.menu est non défini. Une autre chose à noter est qu'il n'envoie même pas la demande. Je pensais que cela pourrait être ma fonction de mise au point.
.focus(function () { $(this).val('');
Mais ce n'est pas. Merci pour votre aide.
La solution
Il se trouve que j'ai inclus un plug-in qui a défini $.fn.menu
et ce fait des ravages. Je l'ai changé pour $.fn.fg_menu
et le problème a été résolu.
Autres conseils
Quelle est la version de base jQuery utilisez-vous?
Je connais un bug lié à détection visible et en rapport avec IE8 . Si possible, vous pouvez passer à la plus récente sur jQuery une machine de test et voir si cela résout votre problème?
Si vous ne vous sentez pas comme la mise à niveau, vous pouvez également essayer le piratage jQuery (UGLY!) - avec cette :
if (self.menu.element.is(":visible"))
devient
if (!(self.menu.element.css('display') == 'none'))