使用Jquery自动完成不在搜索框上工作

时间:2014-08-04 19:57:47

标签: javascript jquery ajax jquery-ui jquery-autocomplete

我正在尝试在搜索文本框中获取TypeAhead功能。如果选择了其中一个,我在表单上有2个单选按钮我需要提前输入功能,以便在搜索框中添加主设备。

 //html
 <li> @Html.TextBox("SearchTitle") </li>

 //JavaScript
 if ($('input[name=SearchType]:checked').val() == "m") {
        var availableMasters = ["ActionScript",
                                "AppleScript",
                                "Asp"];
        $.ajax({
            cache: false,
            type: "GET",
            url: "@(Url.Action("Get", "Masters"))",
            success: function (data) {
                availableMasters = data.list;
            },
        error: function () {
            alert('No Master Available.');
        }
    });

        $("#SearchTitle").autocomplete({
            source: availableMasters
        });
    }

我的问题是表单在ajax调用之前绑定了availableMaster,因此搜索文本框始终具有我在开头添加3个字段时添加的静态文本数组。我在(data.list)中获得了正确的主列表,但它从未显示在文本框中。

一旦ajax调用获得主人列表,有没有办法绑定列表? 感谢您的关注......

1 个答案:

答案 0 :(得分:1)

将它包装在一个函数中,比如init,并在你的ajax调用成功时调用该函数。

function initSearch(){
     $("#SearchTitle").autocomplete({
         source: availableMasters
     });
}

if ($('input[name=SearchType]:checked').val() == "m") {
        var availableMasters = ["ActionScript",
                                "AppleScript",
                                "Asp"];
        $.ajax({
            cache: false,
            type: "GET",
            url: "@(Url.Action("Get", "Masters"))",
            success: function (data) {
                availableMasters = data.list;
                initSearch();
            },
        error: function () {
            alert('No Master Available.');
        }
    });
}