ユーザーが入力する郵便番号テキストボックスから、JQuery Autocompleteを使用してテキストボックスにオートコンプリートされた都市名を表示しようとしています。
City テキストボックスのオートコンプリートは、コントロールにフォーカスすることでトリガーする必要があります。しかし、オートコンプリートされた都市を表示するには、下キーを押す必要があります。さらに、郵便番号のテキストボックスの値を変更すると、オートコンプリートにより、最後に一致した都市が最初に表示されます。これらの問題を解決するために私が何をすべきか知っている人はいますか?
これが私のコードです。まず、ビュー:
<script type="text/javascript">
$(function () {
$('#PostalCode').blur(function () {
$.getJSON("http://xxxxxxxxx/Cities/GetCities", { strPostalCode: $('#PostalCode').val() }, function (data) {
$("#autocompCities").autocomplete({
minLength: 0,
source: data
}).focus(function () {
$(this).autocomplete("search", "");
});
});
});
});
...
@Html.TextBoxFor(model => model.PostalCode)
@Html.TextBoxFor(model => model.City, new { id = "autocompCities" })
そして、私のコントローラーで:
public JsonResult GetCities(string strPostalCode)
{
//retrieving data
var cities = from city in allCities
where city.Id == strPostalCode
select city.Name;
return Json(cities, JsonRequestBehavior.AllowGet);
}
参考までに、「Url.Action」を使用して生成されたルートが、global.asax ファイルにマッピングされたルートと一致しないと考えたため、getJSON 関数の URL を変更することで、先例の問題 (JSONResult 関数が呼び出されなかった) を解決しました。