为什么我的select2自动完成方法没有被执行?

时间:2014-08-15 19:49:07

标签: c# javascript jquery asp.net-mvc jquery-select2

我正在尝试在我的ASP.NET MVC 4网站的主布局上实现select2

我想要它,一旦用户开始输入(最少2个字母),请调用我的方法使用用户已输入的字母查询数据库。除此之外,当我开始输入时,我的方法永远不会被调用。我提出了一些警告,我能够看到我正在键入的内容,但我认为select2没有触发。

以下是标记中的脚本和css引用:

<script src="/Content/select2/select2.js"></script>
<link href="/Content/select2/select2.css" rel="stylesheet" />

这是我的layout.cshtml文件中的搜索框:

<div class="navbar-header hidden-xs pull-right" style="padding-top: 10px; margin-left: 10px;">
  <input id="search" class="form-control" placeholder="Search..." type="text" data-autocomplete-url="/Home/AutoFillValues" />
</div>

这是我的布局页面的底部,其中出现了select2内容:

<script src="/Scripts/jquery-1.9.1.min.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
@RenderSection("scripts", required: false)

<script type="text/javascript">
    $(document).ready(function () {
        $("#search").select2({
            placeholder: "Search...",
            minimumInputLength: 2,
            ajax: {
                url: "~/Home/AutoFillSearch",
                dataType: 'jsonp',
                data: function(search) {
                    return {
                        q: search
                    };
                },
                results: function(search, page) {
                    return { results: data.Results };
                }
            }
        });
    });
</script>

最后,这是我的控制器方法(我不担心这里的代码,我只想看到我的断点在第一行被击中......):

public ActionResult AutoFillValues()
{
    // Get all wrestlers and all teams
    var players = _playerRepo.Query().Where(w => w.Division == "Division I" && w.Conference != null);
    var schools = players.Select(w => w.School).Distinct();

    ArrayList list = new ArrayList();

    foreach (var school in schools)
    {
        var hyperlinkFormat = "<a href=\"{0}\">{1}</a>";

        //@HttpUtility.UrlEncode(Model.Team.Name, System.Text.Encoding.UTF8)
        list.Add(string.Format(hyperlinkFormat, string.Format(RosterPath, school), string.Format(RosterText, school)));
    }

    foreach (var player in playerss)
    {
        var hyperlinkFormat = "<a href=\"{0}\">{1}</a>";

        //@HttpUtility.UrlEncode(Model.Team.Name, System.Text.Encoding.UTF8)
        list.Add(string.Format(hyperlinkFormat, string.Format(RosterPath, player.School), string.Format(RosterText, player.School)));
    }

    return Json(list.ToArray());
}

1 个答案:

答案 0 :(得分:0)

我必须升级到jQuery 2.1(由于版本1.9和.live / .on函数的问题)才能让我的select2开始触发。

现在我只需要让我的select2风格......