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:

text alt

$('#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.

¿Fue útil?

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'))

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top