2011-03-18 49 views
6

我使用jQuery的自动完成,但有做太困难加载自动完成在文本框中使用jQuery自动完成难度

我的模型如下:

Users = new List<string>(); 
foreach (var item in User.LoadSortedByName()) 
{ 
    Users.Add(item.Name+"\n"); 
} 

查看:

<p>@Html.TextBox("user", "") 
$(function() { 
      $("input#user").autocomplete('@Model.Users'); 
}); 

更新 - 简化尝试,仍然无法运作

_layout

<script src="@Url.Content("~/Scripts/jquery.autocomplete.js")" type="text/javascript"></script> 

View 


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

<script type="text/javascript"> 
    $(function() { 
      var availableTags = [ 
      "ActionScript", 
      "AppleScript", 
      "Asp", 
      "BASIC", 
      "C", 
      "C++", 
      "Clojure", 
      "COBOL", 
      "ColdFusion", 
      "Erlang", 
      "Fortran", 
      "Groovy", 
      "Haskell", 
      "Java", 
      "JavaScript", 
      "Lisp", 
      "Perl", 
      "PHP", 
      "Python", 
      "Ruby", 
      "Scala", 
      "Scheme" 
     ]; 
     $("#tags").autocomplete({ 
      source: availableTags 
     }); 


    }); 
+0

@ user281180 - 请问您有任何这方面的进展如何? – 2011-03-23 11:44:59

+0

@Sergi,谢谢你的例子。我尝试了一个简单的自动完成示例,似乎自动完成功能根本不起作用。请参阅我的代码,尽管我引用了jquery.autocomplete.js,但它似乎不起作用。请参阅我的工作测试,不能理解为什么它不起作用。 – learning 2011-03-24 10:53:05

+0

@Sergi,我已经修改了代码,现在只需一个简单的测试,似乎自动完成工作根本不起作用。请参阅新代码 – learning 2011-03-24 11:00:30

回答

16

实际上,您应该将自动填充行为附加到文本框中。

也就是说,如果你问我,jQuery库中包含的自动完成版本并不完全简单。

$("input#user").autocomplete({ 
    source: function (request, response) { 
     // define a function to call your Action (assuming UserController) 
     $.ajax({ 
      url: '/user/GetUsers', type: "POST", dataType: "json", 

      // query will be the param used by your action method 
      data: { query: request.term }, 
      success: function (data) { 
       response($.map(data, function (item) { 
        return { label: item, value: item }; 
       })) 
      } 
     }) 
    }, 
    minLength: 1, // require at least one character from the user 
}); 

在你的控制器中,定义了以下行动

public ActionResult GetUsers(string query) 
{ 
    var users = (from u in User.LoadSortedByName() 
       where u.Name.StartsWith(query) 
       orderby u.Name // optional but it'll look nicer 
       select u.Name).Distinct().ToArray(); 

    return Json(users); 
} 

此实现不会让你的文本框的多个值;关于如何做到这一点检查基础上最终解决

jQuery autocomplete examples

UPDATE请确保您有在jQuery UI的核心的参考例子。

从微软CDN:

<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.11/jquery-ui.min.js" type="text/javascript"></script>` 

从谷歌CDN:

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js" type="text/javascript"></script> 

或者自己从official jQuery UI Page

0

我不认为你“负载在文本框”,但更多的“自动完成连接到”文本框。尝试为自动填充的“答案”创建一个JavaScript数组。

这也有助于了解您是否使用jQuery UI或旧版插件自动完成。

1

我公司开发的插件形式的HTML扩展下载,使用jquery ui自动完成,但在一个非常简单和动态。语法是这样的事情在这里

 [email protected](model => model.Id, x => x.Code , "List") 

我将所有的源代码可用(建议,欢迎),并包含一个zip文件,所有必要的文件。 希望有所帮助!

项目URL http://autocompletemvc.codeplex.com/releases/view/70140

的bin文件 http://autocompletemvc.codeplex.com/releases/70140/download/259741

+1

您的帮手对部分视图的依赖性使其几乎无法使用。 – 2011-07-29 20:07:51