2014-06-06 76 views
0

我嘗試使用自動完成編寫jQuery腳本,並在客戶端選擇正確的值。jQuery自動完成「TypeError:回調不是函數」

沒有選定值我的工作代碼(它讓我在我的JSON所有可用的用戶名):

$(function() { 
     $("#users").autocomplete({ 
      source: function(request, response) { 
      $.ajax({ 
       url: "http://127.0.0.1/json.php", 
       dataType: "json", 
       data: { 
        style: "full", 
        maxRows: 12, 
        name_startsWith: request.term 
       }, 
       success: function(data) { 
         response($.map(data.employee, function(item) { 
         return { 
          label: item.username, 
          }; 
        })); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function(event,ui) { 
       $('#users').val(ui.item.username); 
      } 
     }); 

但是當我嘗試添加選擇,在this例如如何。

我的代碼:

$(function() { 
    $("#users").autocomplete({ 
     source: function(request, response) { 
     $.ajax({ 
      url: "http://127.0.0.1/json.php", 
      dataType: "json", 
      success: function(data) { 
        var re = $.ui.autocomplete.escapeRegex(request.term); 
        var matcher = new RegExp("^" + re, "i"); 
        response($.grep($.map(data.employee, function(item){ 
         return { 
          label: matcher.test(item.username), 
         } 
        }))); 
       } 
      }); 
     }, 
    minLength: 2, 
    select: function(event,ui) { 
      $('#users').val(ui.item.username); 
     } 
    }); 
}); 

我得到一個錯誤:

TypeError: callback is not a function jquery-1.10.2.js:762

我在做什麼錯?

P.S.我的JSON:

{"employee":[{"username":"username1","placeId":"505B-D","subordinates":["username2","username3"]},{"username":"username4","placeId":"505B-A","subordinates":["username5","username6"]}]}

+1

你不及格的功能,'$ .grep'。 –

+0

查看'$ .grep'的文檔:http://api.jquery.com/jquery.grep/ –

回答

0

如果你想使用grep和地圖一起,你可以寫這樣的事情:

function() { 
     $("#users").autocomplete({ 
      source: function(request, response) { 
      $.ajax({ 
       url: "http://172.18.128.186/json.php", 
       dataType: "json", 
       success: function(data) { 
         var re = $.ui.autocomplete.escapeRegex(request.term); 
         var matcher = new RegExp("^" + re, "i"); 
         var g = $.grep(data, function(item){return matcher.test(item.username);}); 
         response($.map(g, function(item){return {label: item.username,}})); 
        } 
       }); 
      }, 
     minLength: 2, 
     select: function(event,ui) { 
       $('#users').val(ui.item.username); 
      } 
     }); 
相關問題