2014-10-09 2 views
0

Я создал плагин-оболочку для плагина автозаполнения jquery, поскольку мы используем его повсюду в наших проектах и ​​вам нужно глобально изменять его время от времени, однако всякий раз, когда я ссылаюсь на плагин i получаю ошибку: Uncaught TypeError: undefined is not a function мой pluggin выглядит так:Uncaught TypeError: undefined не является функцией с настраиваемым плагином jQuery

(function ($) { 
$.fn.CustomAutocomplete = function (options) { 
    //Settings 
    alert("test"); 
    var settings = $.extend({ 
     //Defaults 
     ContollerMethodLink: "", 
     ReturnElement: "" 
    }, options); 

    $(this).autocomplete({ 
     source: function (request, response) { 
      var employees = new Array(); 
      $.ajax({ 
       async: false, 
       cache: false, 
       type: "POST", 
       url: ContollerMethodLink, 
       data: { "query": request.term }, 
       success: function (data) { 
        for (var i = 0; i < data.length; i++) { 
         employees[i] = { label: data[i].Key, Id: data[i].Value }; 
        } 
       } 
      }); 
      response(employees); 
     }, 
     select: function (event, ui) { 
      //fill selected customer details on form 
      var id = ui.item.Id; 
      $('#' + settings.ReturnElement).val(id); 
     } 
    }); 
} 
})(jQuery); 

Я тогда называть это так:

$(document).ready(function() { 
     $('#AddReportingEmpText').CustomAutocomplete({ 
      ReturnElement: "AddReportingEmpId", 
      ContollerMethodLink: "@(Url.Action("Method", "Controllers"))", 
     }); 
    }); 

Однако, когда я пытаюсь использовать это я получить указанную ошибку в случайном пустом пространстве справа выше $(document).ready(function() {, если я твердо вычеркнуть запрос ajax в том месте, где я в настоящее время вызываю мой плагин, все работает нормально. Есть идеи?

Edit: Стоит отметить, что это мой вызов JS файла:

<script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script> 
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js" type="text/javascript"></script> 

Затем я называю мой файл плагина и отладчик показывает мне его должным образом включены

+0

этот '' @ (Url.Action («Метод», «Контроллеры»)) »' недействителен! также вместо 'url: ContollerMethodLink,' вы должны написать 'url: settings.ContollerMethodLink,' –

+0

@AminJafari приятно поймать переменную настроек, хотя '@ url.Action' просто печатает относительный URL-адрес любому контоллеру/методу, который я передаю к нему и им использовать это как местоположение вызова ajax – Typhomism

ответ

0

Это, как представляется, хорошо известная проблема с последними версиями Chrome. Использование браузера FF предоставит более подробную информацию об ошибке

+0

Это помогло решить проблему, проблема заключалась в том, что были включены две версии jQuery, – Typhomism