【发布时间】:2012-11-05 15:16:41
【问题描述】:
我正在使用 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是前端内容中唯一显示的东西)。
我应该如何/应该如何正确地做到这一点?
【问题讨论】:
-
不是很清楚,但听起来好像你想要自动完成的默认功能。
-
@Kevin B - 我不这么认为,因为 例如,与“自动完成”小部件的 select 事件相关的默认功能“是替换文本字段的值与所选项目的值”。在这种情况下,正如我在问题中所写,我想在选择城市的输入字段中显示城市
name(label)而不是id(value)。跨度> -
这似乎对我有用,在这个小提琴中,输入
f并选择 foo,bar出现在输入中。 jsfiddle.net/f8yPX -
@Kevin B - 您的链接代码不是我正在寻找的。但是,考虑到您的情况,我希望 仍然显示
foo标签(在选择foo时)但 提交bar值,当我提交相关形式。 -
在选择时,使用您想要的值填充隐藏输入并提交隐藏输入而不是自动完成。
标签: javascript jquery ruby-on-rails ruby jquery-ui