【问题标题】:AutoComplete TextBox for multiple items like stackoverflow tags search section in Asp.net Mvc多个项目的自动完成文本框,如 Asp.net Mvc 中的 stackoverflow 标签搜索部分
【发布时间】:2014-01-08 00:40:21
【问题描述】:

我尝试获取多个项目的自动完成文本框。

我的观点看起来像

  $(function () {
      var availableTags = Html.Raw(Json.Encode(ViewBag.movies));
      function split(val) {
          return val.split(/,\s*/);
      }
      function extractLast(term) {
          return split(term).pop();
      }

      $("#tags")
      // don't navigate away from the field on tab when selecting an item
  .bind("keydown", function (event) {
      if (event.keyCode === $.ui.keyCode.TAB &&
        $(this).data("ui-autocomplete").menu.active) {
          event.preventDefault();
      }
  })
  .autocomplete({
      minLength: 0,
      source: function (request, response) {              
          response($.ui.autocomplete.filter(
        availableTags, extractLast(request.term)));
      },




  @using (@Html.BeginForm())
   {
    <b>Search Movie</b>
    @Html.TextBox("tags", null, new { id = "tags" })
   @* @Html.TextBoxFor(m => m.nam, new { id = "txtSearch", name = "SearchTerm" })*@
    }

我的控制器动作方法如下所示

   public JsonResult GetMovieNames(string term)
    {
        List<string> mnames = db.Movienames(term).ToList();
        var rows = mnames.ToArray();
        ViewBag.movies = rows;
        return Json(mnames, JsonRequestBehavior.AllowGet);
    }

如何将电影名称(即字符串列表)传递给 javascript 中的可用标签。 在输出中它显示家庭/电影名称。但我需要将电影名称列表到可用标签中。

【问题讨论】:

    标签: javascript jquery asp.net-mvc-4 autocomplete


    【解决方案1】:

    class 属性应用于需要自动完成功能的元素并使用以下代码。检查documentation

    查看documentation 以获取完整的代码示例

    $( ".className" ))
    .autocomplete({
     source: function( request, response ) {
     $.getJSON( "search.php", {
     //cosntruct it
     }, response );
    }
    

    更新:如果使用 MVC,只需将 search.php 更改为 \Controller\Search

    这里是为自动完成构建基于 JSON 的输出的示例代码

    public JsonResult Search(string term)
    {
        List<Records> recs = new List<Records>();           
        var rows = recs.ToArray();
        return Json(rows, JsonRequestBehavior.AllowGet);
    }
    

    【讨论】:

    • 我使用 mvc.so 代替了我需要使用的 search.php.which(我的意思是操作方法)
    • 在 jquery 网站中他们给出 .autocomplete({ minLength: 0, source: function( request, response) { response( $.ui.autocomplete.filter( availableTags, extractLast( request.term ) ) ) ; },
    • 我需要将字符串数组从控制器传递到视图(在“availabletags”中我需要传递数据库值)。如何?感谢您提供响应...
    • @user3145484,把它保存在 ViewBag 中并通过。
    • 我也试过那个。"var availableTags = Html.Raw(Json.Encode(ViewBag.movi​​es));"不工作
    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2018-07-29
    • 2018-02-05
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多