2010-06-24 2 views
1

Pour une raison quelconque, l'autocomplétion de jQuery UI a cessé de fonctionner pour moi. Je reçois la même erreur que celle décrite au this webpage.La saisie semi-automatique de l'interface utilisateur jQuery a cessé de fonctionner

J'ai copié le contenu de la requête à partir de cette page Web, en espérant que quelqu'un puisse y répondre.

Merci! J'utilise Jquery UI Autocomplete pour obtenir une liste de noms. Mais pour une raison quelconque, je reçois une erreur:

alt text

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

J'apprécierais toute sorte d'aide à ce sujet.

Il provient du fichier jQuery UI 1.8.1, en particulier jQuery UI Autocomplete 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 cependant parce que cela fonctionne parfaitement dans un autre projet. Ce que j'ai remarqué est quand le code frappe la section [étoilé] la section de self.menu est indéfinie. Une autre chose à noter était qu'il n'envoie même pas la demande. Je pensais que ce pourrait être ma fonction de mise au point.

.focus(function() { 
    $(this).val(''); 

Mais ce n'est pas le cas. Merci pour votre aide.

+0

Vous devez marquer votre propre réponse comme réponse. En outre, très souvent cela casse parce que les données retournées ont des citations non échappées. – tomdemuyt

+0

Je ne suis pas sûr de comprendre ce que vous voulez dire par votre deuxième phrase. Je serai sûr de signaler ma propre réponse, apparemment je ne peux pas accepter ma propre réponse pendant deux jours. Merci! –

Répondre

3

Il se trouve que je inclus un plugin qui a défini $.fn.menu et ce ravage forgé. Je l'ai changé à $.fn.fg_menu et le problème a été résolu.

0

Quelle version du core jQuery utilisez-vous?

Je connais un bug lié à visible detection et lié à IE8. Si possible, pouvez-vous passer à la dernière version de jQuery sur un ordinateur 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!) - with this:

if (self.menu.element.is(":visible"))

devient

if (!(self.menu.element.css('display') == 'none'))

+0

Merci pour votre réponse! J'utilise jQuery 1.4.2. Il s'avère que ce n'était pas mon problème, mais j'espère que cela aidera quelqu'un d'autre! –