2012-06-17 132 views
2

我想为自动完成输入类型首次实现JSON。JSON自动完成,不显示结果

@{ 
    ViewBag.Title = "Index"; 
} 

<script type="text/javascript"> 
function searchFailed(){ 
$("#searchresults").html("Sorry, there was a problem with the search."); 
} 
    $("input[data-autocomplete-source]").each(function() { 
     var target = $(this); 
     target.autocomplete({ source: target.attr("data-autocomplete-source") }); 
    }); 
</script> 

<h2>Index</h2> 

@using (Ajax.BeginForm("QuickSearch", "Search", new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "GET", OnFailure = "searchFailed", LoadingElementId = "ajax-loader", UpdateTargetId = "searchresults", })) 
{ 
<input type="text" name="q" data-autocomplete-source="@Url.Action("QuickSearch", "Search")" /> 

} 

但它是抱怨数据自动完成源不是一个有效的属性。它进入快速搜索,但我没有看到自动完成的结果。

回答

0
target.data("autocomplete-source"); 

使用数据属性。 jQuery的。 data


替换:

$("input[data-autocomplete-source]").each(function() { 
    var target = $(this); 
    target.autocomplete({ source: target.attr("data-autocomplete-source") }); 
}); 

有:

$(function() { 
    $("input[data-autocomplete-source]").each(function() { 
     var target = $(this); 
     target.autocomplete({ source: target.data("autocomplete-source") }); 
    }); 
}); 

您使用$(function() {})等到页面是 “准备” 和元素存在。


变化:

<input type="text" name="q" data-autocomplete-source="@Url.Action("QuickSearch", "Search")" /> 

到:

<input class="my-autocomplete" type="text" name="q" data-autocomplete-source="@Url.Action("QuickSearch", "Search")" /> 

而变化:

$("input[data-autocomplete-source]").each 

到:

$("input.my-autocomplete").each 
+0

我必须在哪里添加target.data? – user1408786

+0

这是在呼唤我的行动。但是我没有在建议列表中看到该行动的结果? – user1408786