2013-02-13 65 views
0

我試圖與引導工作2.2.2預輸入其按照文檔可以被配置爲它的來源選項中的一些功能簡單的內置函數的數據源。Twitter的引導2.2.2預輸入不工作

$('#test').typeahead({   
     source: function (query, process) { 
      return $.get('@Url.Action("Search")', { query: query }, function (data) { 
       return process(data); 
      }); 
     } 
    }); 

這就是我想要的。

我的服務器端有簡單的動作

public ActionResult Search(string query) 
    { 
     var teamMembers = new List<String>(); 
     for (int i = 1; i < 21; i++) 
     { 
      var teammember = "john doe + (" + i +")";          
      teamMembers.Add(teammember); 
     }; 

     return new JsonResult() 
     { 
      Data = teamMembers.ToArray(), 
      JsonRequestBehavior = JsonRequestBehavior.AllowGet 
     }; 
    } 

它不能得到任何簡單的比這一點,但我的「搜索」行動沒有得到在全部命中。如果任何人都可以引導我做錯了什麼,並且TypeAhead如何精確地通過某些異步設置Source來調用控制器Action。函數僅使用bootstrape 2.2.2本地組件。如果需要澄清,請告訴我。

靜態數據工作得很好所以顯然沒有文件說我在這裏失蹤。你也可以在下面的標記中看到。

<input type="text" data-provide="typeahead"         
      data-source='["Deluxe Bicycle", "Super Deluxe Trampoline", "Super Duper Scooter"]'> 

P.S請不要提及任何預輸入叉在那裏我只是有興趣瞭解Twitter的引導2.2.2原生預輸入功能。

更新:全碼 的HomeController

public class HomeController : Controller 
    { 
    public ActionResult Index() 
    { 
     return View(); 
    }   

    public ActionResult TypeAhead(string query) 
    { 
     var teamMembers = new List<String>(); 
     for (int i = 1; i < 21; i++) 
     { 
      var teammember = "john doe + (" + i +")";          
      teamMembers.Add(teammember); 
     }; 

     return new JsonResult() 
     { 
      Data = teamMembers.ToArray(), 
      JsonRequestBehavior = JsonRequestBehavior.AllowGet 
     }; 
    }   
} 

我當前視圖的標記。

<script src="~/Scripts/jquery-1.7.1.js"></script> 
    <script src="~/Scripts/bootstrap.js"></script> 
    <link href="~/Content/bootstrap.css" rel="stylesheet" /> 

    <script type="text/javascript"> 

     $(document).ready(function() { 

      $('#testSearch').typeahead({ 
       source: function (query, process) { 
        $.get('@Url.Action("TypeAhead")', { query: query }, function(data) { 
        process(data); 
        }); 
       } 
      });   
     }); 

    </script> 


    <ol class="round">    
     <li class="three"> 
     <input id="testSearch" data-provide="typeahead" > 
    </li>   
    </ol> 
+0

您是否嘗試過直接訪問搜索操作?用你的瀏覽器?嘗試使用靜態數據來檢查typeahead是否已初始化。 – Sherbrow 2013-02-13 08:26:57

+0

@Sherbrow是的,我可以通過我的瀏覽器訪問我的動作控制器「搜索」動作。靜態數據也很好,我已經用那裏的標記更新了我的問題。 – afr0 2013-02-13 08:44:04

+1

我沒有看到有什麼問題,您應該使用Web檢查器(ajax請求,響應標頭,響應內容)檢查進程,並在JS中放置一些斷點以查看執行的內容。 [工作小提琴](http://jsfiddle.net/Sherbrow/c8tTv/2/) – Sherbrow 2013-02-13 10:42:06

回答

0

您的代碼爲我工作得很好。

我創建了一個全新的項目,從獲得的NuGet Twitter的引導2.2.2和下面的代碼添加到索引視圖。

<input type="text" id="test" data-provide="typeahead"/> 

<script> 
$('#test').typeahead({ 
    source: function (query, process) { 
     return $.get('@Url.Action("Search")', { query: query }, function (data) { 
      return process(data); 
     }); 
    } 
}); 
</script> 

我然後複製並粘貼您的搜索方式進入家庭控制器

鍵入字母J和Ø到文本框,在預輸入功能工作正常後。

必須有別的東西給你帶來問題。

你有沒有使用網頁檢查或類似提琴手一個工具,請求以正確的搜索終點,當你在文本框中鍵入正在作出檢查?

如果您創建一個新項目,它是否適合您?

你能從你的視圖中發佈完整的代碼嗎?

+0

我用完整的代碼更新了我的問題。我在輸入元素中輸入時看不到任何活動在提琴手中。我在新創建的示例項目中測試這個,因爲我無法進入我的應用程序。 – afr0 2013-02-14 07:55:29

+0

我嘗試了你發佈的完全相同的代碼,它對我來說非常合適。你在測試什麼瀏覽器?你有沒有嘗試在不同的瀏覽器中測試它? – 2013-02-14 11:32:56

+0

我試過了,IE9,Chrome和FF。你能不能與我分享樣本解決方案?那挺棒的。它可能與bundle配置有關,或者我仍然試圖找出 – afr0 2013-02-14 12:43:12