我有国家,州的主人......我为位置制作了自动完成文本框。此自动完成功能会返回这些主人的所有地点名称(所有国家名称和州名称)。 我传递给 jquery 的只是字符串形式的位置名称。我想将位置 ID 和位置名称都传递给 jquery,但只想在自动完成中显示位置名称。 由于此自动完成功能用于存储用户的首选位置。 我需要带有相应位置名称的 ID 来将用户预置位置信息存储在用户表中。
请建议我该怎么做......一个演示会更有用......
我有国家,州的主人......我为位置制作了自动完成文本框。此自动完成功能会返回这些主人的所有地点名称(所有国家名称和州名称)。 我传递给 jquery 的只是字符串形式的位置名称。我想将位置 ID 和位置名称都传递给 jquery,但只想在自动完成中显示位置名称。 由于此自动完成功能用于存储用户的首选位置。 我需要带有相应位置名称的 ID 来将用户预置位置信息存储在用户表中。
请建议我该怎么做......一个演示会更有用......
我假设您正在使用 JqueryUI 进行自动完成。默认情况下,JqueryUI 的自动完成功能将与 json 对象一起工作——更具体地说,是一组具有以下属性的对象字面量:“标签”和“值”;
{ label:x, value:y }
自动完成将使用“标签”属性来计算自动完成匹配,并且当用户选择时,将使用“值”属性作为选定项。此外,如果“value”属性被省略,“label”将用于比较和选择。
需要注意的重要一点是,您不仅限于这些属性。例如,您可以添加其他属性,例如 ..say .."location_id"。
{ label: "Some State and Country", location_id: 2 }
使用自动完成事件“select”,您可以采取一些行动,即将选定的 location_id 存储到隐藏的输入中,以通过表单发布,甚至触发一个 whiz-bang ajax 调用。尝试这个:
...
<form>
Locations: <input id="location" />
<input type="hidden" id="location_id" />
<input type="submit">
</form>
...
<script>
var mylocations = [
{
label: "North Carolina, USA",
id: 123
},
{
label: "North Dakota, USA",
id: 128
},
{
label: "Nevada, USA",
id: 125
},
{
label: "New York, USA",
id: 311
},
{
label: "New Brunswick, Canada",
id: 267
},
{
label: "Nova Scotia, Canada",
id: 235
},
{
label: "Newfoundlandand , Canada",
id: 223
}];
$("#location").autocomplete({
source: mylocations,
select: function( event, ui ) {
// store your location id somewhere like a hidden input ..you
// can then allow the user to post the form (and selected id) back.
$( "#location_id" ).val( ui.item.id );
return false;
}
});
</script>