jQuery 自动完成选择填充其他字段

发布于 2024-12-03 23:47:13 字数 983 浏览 1 评论 0原文

我调用远程数据源并返回 json。选择一个项目后,select: 回调选项仅允许我使用该项目的标签和值,但我还想使用 json 对象的其他属性来自动填充其他字段。

有没有一种我缺少的便捷方法可以做到这一点?到目前为止我看到的选项是...

  1. 全局缓存ajax响应json对象,并在选择后引用此全局对象
  2. 使用项目的值或标签在选择时重新查询数据库

对其中任何一个都不是特别满意。想法?

编辑 我忘记我正在使用 $.map

$('#accountName').autocomplete({
  source: function (request, response) {

      $.getAccountsByNameLike(request.term, function (data) {
          response($.map(data, function (item) {
              return {
                  label: item.Name + ' (' + item.Address.City + ', ' + item.Address.StateOrProvince + ')',
                  value: item.AccountId,
                  // Added to fix issue
                  raw: item
              }
          }));
      }, function (error) {
          // async kickoff a log to logging server service...
          alert("There was a problem while trying to retrieve account names. Please contact support");
      });

I call a remote data source and get back json. After I select an item the select: callback option only allows me to work with the item's label and value, but I would also like to work with the other properties of my json object to autopopulate other fields.

Is there a convenient way to do this that I am missing? The options I see so far are...

  1. Cache the ajax response json object globally and reference this global object after select
  2. Re-query the database on select using the item's value or label

Not particularly satisfied about either of those. Thoughts?

Edit
I forgot I was using $.map

$('#accountName').autocomplete({
  source: function (request, response) {

      $.getAccountsByNameLike(request.term, function (data) {
          response($.map(data, function (item) {
              return {
                  label: item.Name + ' (' + item.Address.City + ', ' + item.Address.StateOrProvince + ')',
                  value: item.AccountId,
                  // Added to fix issue
                  raw: item
              }
          }));
      }, function (error) {
          // async kickoff a log to logging server service...
          alert("There was a problem while trying to retrieve account names. Please contact support");
      });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

有深☉意 2024-12-10 23:47:13

是什么让您认为您只能使用标签和价值?

select: function (event, ui) {
       foo = ui.item.label;
        $("#bar").val(ui.item.id);
       baz = (ui.item.JsonField);
    }

what makes you think you can only work with the label and value?

select: function (event, ui) {
       foo = ui.item.label;
        $("#bar").val(ui.item.id);
       baz = (ui.item.JsonField);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文