我正在使用 Ruby on Rails 3.2.2 和jquery-rails 2.1.3(包括 jQuery UI)。我正在尝试实现一个 HTML 表单,以便使用Autocomplete jQuery UI 小部件搜索、选择和提交城市数据。
此时我正在使用以下“自动完成”字段实现我的表单:
<div class="ui-widget">
<label for="cities">City: </label>
<input id="cities" />
</div>
<script>
$jQ(function() {
var cache = {};
$jQ( "#cities" ).autocomplete({
autoFocus: true,
minLength: 3,
source: function( request, response ) {
$jQ.ajax({
url: '<SEARCH_PATH>',
data: { search: request.term },
dataType: 'json',
success: function(data) {
var cities = new Array();
$jQ.each(data, function(arrayID, city) {
cities.push({ label: city.name, value: city.id })
});
response( cities );
},
error: function () {
response([]);
}
});
}
});
});
</script>
上面的代码按预期工作,用于检索 JSON 数据并显示检索到的城市列表。如您所见,城市数据的“有用部分”是城市数据,id
因为我使用该id
值是为了在内部处理提交的数据。但是,鉴于显示了“可选”城市列表,当我使用键盘向上和向下箭头来选择其中一个城市时,输入字段将填充城市id
(而不是城市name
)。
我想:
- 在选择城市的输入字段中显示城市
name
而不是id
- 想办法提交城市
id
而不是城市name
(即使城市name
是前端内容中唯一显示的东西)。
我如何/应该如何正确地做到这一点?