2009-12-24 193 views
0

我正在使用jquery自動完成來填充用戶列表。 在document.ready,我打電話給自動完成JSON獲取用戶列表。jquery自動完成問題

當我在自動完成json調用完成之前在文本框中輸入有效的用戶名(或任何內容)時,它不會顯示自動完成選項(自動完成功能對於有效字符也不起作用)。

,當我點擊文本框外,並再次嘗試,它的工作..

什麼可能是自動完成的問題,當我嘗試自動完成JSON調用完成之前鍵入?

爲自動完成的代碼是:

$.getJSON("/User/GetAllUsers/?t=" + new Date(), {}, 
     function(data) { 
      if (data != null) { 
       $("#UserName").autocomplete(data, { mustMatch: false, matchContains: 4, max: 50, 
        formatItem: function(row) { 
         return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]"; 
        }, 
        formatResult: function(row) { 
         return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]"; 
        } 
       }); 
      } 
     }); 
+0

你可以發佈一些代碼,也許coument.ready你綁定自動完成? – Pharabus 2009-12-24 16:14:20

回答

0

如果您在文本框中鍵入,然後JSON通話結束,以及設置自動完成以後。

編輯:忘了我說: 你可以使用search方法手動觸發搜索

嘗試觸發文本框上的更改事件嗎? http://docs.jquery.com/Events/trigger

+0

觸發器也不起作用。它沒有顯示值,除非我專注於其他控件並返回到用戶名控制。 – Prasad 2009-12-24 16:58:01

+0

你可以做一個blur()和一個focus()嗎? – 2009-12-24 18:42:49

0

設置自動完成部分的回調方法只在getJSON調用完成後執行。

您可以執行以下兩項操作之一: 1.構建阻止UI /文本框的阻止機制,直到json調用完成。實質上,自動完成合作完成後。 2.使用自動完成插件直接查詢GetAllUsers方法:

$("#UserName").autocomplete("/User/GetAllUsers/?t=" + new Date(), { mustMatch: false, matchContains: 4, max: 50, 
       formatItem: function(row) { 
        return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]"; 
       }, 
       formatResult: function(row) { 
        return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]"; 
       } 
      }); 

那麼你將不得不過濾用戶在使用queryParameter(Q),這將包含所需的搜索項的服務器端。