2015-06-30 7 views
0

У меня есть страница с autocomplete функции из JQuery UI, но я получаю следующее сообщение об ошибке:

JavaScript runtime error: Object doesn't support property or method 'autocomplete'

Я тянул мои волосы, потому что все, казалось, хорошо, но я все еще получаю эту ошибку, вот код:

<link href="~/Content/jquery-ui/jquery-ui.css" rel="stylesheet" /> 
<link href="~/Content/jquery-ui/jquery-ui.theme.css" rel="stylesheet" /> 
<script src="~/Scripts/jquery-1.10.2.min.js"></script> 
<script src="~/Scripts/jquery-ui.min.js"></script> 

<input type="text" id="tags"> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#tags").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: "/Home/AutoCompleteSearch", 
        type: "POST", 
        dataType: "json", 
        data: { term: request.term }, 
        success: function (data) { 
         response($.map(data, function (item) { 
          return { label: item.ProductName, value: item.ProductName}; 
         })); 

        } 
       }); 
      }, 
      messages: { 
       noResults: "", results: "" 
      } 
     }); 
    }) 
</script> 

ничего не получалось, пока я не удалил $(document).ready части, мне было интересно, что же это имеет отношение к делу? почему, когда я удалил $(document).ready внезапно, функция автозаполнения получила признание?

+0

Вы можете реплицировать эту ошибку на http://jsbin.com? Кажется, он работает здесь http://jsbin.com/verotidahe/edit?html,output – Dhiraj

+0

Похоже, если вы не в '' тег – kosmos

+0

Кроме того, вам не нужно использовать 'onReady', если вы наберете свой кода после визуализированного html, потому что элемент уже существует. Это потому, что он работает без него. – kosmos

ответ

0

Прежде всего, вы не закрыли $(document).ready(function(){}) с помощью ; (с запятой).

Сейчас подходит к точке, $(document).ready(); используются при наступлении события, как: .click(), .blur(), .change() и т.д. $(document).ready() означает, что вы не можете TIGGER события, пока страница (документ) не будет полностью готова.

Но так, как вы объявили autocomplete(), здесь не происходит никакого события. Вот почему он работает без $(document).ready().

+0

Он по-прежнему дает мне ошибку даже с точкой с запятой, я знаю, какой документ уже готов, но эта ошибка казалась странной. – Deckard

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