2010-06-24 2 views
1

По какой-то причине автозаполнение jQuery UI перестало работать для меня. Я получаю ту же ошибку, что и на this webpage.jQuery UI Автозаполнение перестало работать

Я скопировал содержание запроса с этой веб-страницы ниже, надеясь, что кто-то здесь сможет ответить на него.

Спасибо!

Я использую Jquery UI Autocomplete, чтобы получить список имен. Но по какой-то причине, я получаю сообщение об ошибке:

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

Я понятия не имею, почему это происходит. Я использую JQuery UI 1.8.1.

Буду признателен за любую помощь в этом вопросе.

Он исходит из файла jQuery UI 1.8.1, в частности, 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"); 

Это странно, хотя это работает безупречно в другом проекте. Я заметил, что когда код попадает в раздел [starred], раздел self.menu не определен. Другое дело, что он даже не отправляет запрос. Я думал, что это может быть моя функция фокуса.

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

Но это не так. Благодарим вас за помощь.

+0

Вы должны указать свой ответ в качестве ответа. Кроме того, очень часто это прерывается, потому что возвращаемые данные имеют необработанные кавычки. – tomdemuyt

+0

Я не уверен, что понимаю, что вы подразумеваете под своим вторым предложением. Я обязательно буду отмечать свой собственный ответ, по-видимому, я не могу принять свой собственный ответ в течение двух дней. Благодаря! –

ответ

3

Оказывается, что я включил плагин, который определил $.fn.menu и этот коварный хаос. Я изменил его на $.fn.fg_menu, и проблема была решена.

0

Какую версию ядра jQuery вы используете?

Я знаю об ошибке, связанной с visible detection и связанной с IE8. Если возможно, можете ли вы обновиться до самого последнего jQuery на тестовом компьютере и посмотреть, решит ли это вашу проблему?

Если вы не чувствуете, как модернизация, вы также можете попробовать хакерство JQuery (некрасиво!) - with this:

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

становится

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

+0

Спасибо за ваш ответ! Я использую jQuery 1.4.2. Оказывается, это не моя проблема, но, надеюсь, это поможет кому-то еще! –

Смежные вопросы