jQuery UI autocompletar dejado de funcionar
-
29-09-2019 - |
Pregunta
Por alguna razón autocompletar de jQuery UI ha dejado de funcionar para mí. Consigo el mismo error como se describe en la página.
He copiado el contenido de la consulta desde esa página web a continuación, con la esperanza de que alguien aquí será capaz de responder a ella.
Gracias!
Estoy utilizando Jquery UI Autocomplete
para obtener una lista de nombres. Pero por alguna razón estoy consiguiendo un error:
$('#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'); } });
No tengo idea de por qué ocurre esto. Estoy usando jQuery UI 1.8.1.
Le agradecería cualquier tipo de ayuda en esto.
Está viniendo desde el archivo de interfaz de usuario jQuery 1.8.1, específicamente jQuery UI autocompletar 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");
Es raro, porque aunque esto funciona sin problemas en otro proyecto. Lo que he notado es cuando el código golpea la sección [protagonizado] la sección self.menu no está definido. Otra cosa de la nota era que ni siquiera enviar la solicitud. Estaba pensando que podría ser mi función de enfoque.
.focus(function () { $(this).val('');
Pero no lo es. Gracias por tu ayuda.
Solución
Resulta que he incluido un plugin que define $.fn.menu
y esto provocó el caos. Lo cambié a $.fn.fg_menu
y el problema estaba resuelto.
Otros consejos
¿Qué versión de jQuery núcleo está usando?
Yo sé de un error relacionado con visibles detección y relacionado con IE8 . Si es posible, se puede actualizar a la más reciente de jQuery en una máquina de prueba y ver si se soluciona el problema?
Si no se siente como la actualización, usted podría también tratar de piratería jQuery (FEO!) - con este :
if (self.menu.element.is(":visible"))
se convierte
if (!(self.menu.element.css('display') == 'none'))