0

我有国家,州的主人......我为位置制作了自动完成文本框。此自动完成功能会返回这些主人的所有地点名称(所有国家名称和州名称)。 我传递给 jquery 的只是字符串形式的位置名称。我想将位置 ID 和位置名称都传递给 jquery,但只想在自动完成中显示位置名称。 由于此自动完成功能用于存储用户的首选位置。 我需要带有相应位置名称的 ID 来将用户预置位置信息存储在用户表中。

请建议我该怎么做......一个演示会更有用......

4

1 回答 1

0

我假设您正在使用 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>
于 2012-04-27T09:38:04.910 回答