【问题标题】:JQuery UI autocomplete combobox selecting value instead of nameJQuery UI 自动完成组合框选择值而不是名称
【发布时间】:2014-12-23 20:44:32
【问题描述】:

我需要一个组合框(id / name)对,用户在其中选择一个项目,并将 id 发送到服务器。 同时组合框调用一个 ajax webservice 来选择自动完成

我有一个几乎可以工作的例子,在这个JSFiddle

这里是 AJAX 部分:

source: function(request, response) {
                $.ajax({
                    url: "http://ws.geonames.org/searchJSON",
                    type: "POST",
                    dataType: "jsonp",
                    data: {
                        featureClass: "P",
                        style: "full",
                        username: "andrebarata",
                        maxRows: 12,
                        name_startsWith: request.term
                    },
                    success: function(data) {
                        response($.map(data.geonames, function(item) {
                            return {
                                label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                                value: item.geonameId
                            }
                        }));
                    }
                })
            },

唯一的问题是,当我选择一个值时,它会将值更改为 ID 而不是名称。

我应该怎么做才能改变这个?

【问题讨论】:

  • 我想知道解决方案是否可以在每个自动完成项中存储一个(名称/值)对,然后检索我需要的那个

标签: jquery ajax user-interface combobox autocomplete


【解决方案1】:

如果我将“value: item.geonameId”更改为“value: item.name”,它就可以工作了......

要获取 id,请添加一个新属性“geoid”,如下所示:

success: function(data) {
                        response($.map(data.geonames, function(item) {
                            return {
                                label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                                value: item.name,
                                geoid: item.geonameId
                            }
                        }));
                    }
                })
            },
            select: function(event, ui) {
                alert(ui.item.value+" , "+ ui.item.geoid);

【讨论】:

  • 是的,但是 ID 丢失了,您可以在弹出消息中看到。
  • 我认为自动完成小部件只存储一个简单的列表,而不是一个(名称/值)对列表
  • 好的,但是您可以通过添加一个新属性(如 geoid)并将您的 id 数据放入其中来实现。所以你有这个: "..value: item.name, geoid:item.geonameId ..." 并在警报消息中: "ui.item.value+" , "+ ui.item.geoid"
猜你喜欢
  • 1970-01-01
  • 2014-09-01
  • 2011-01-06
  • 1970-01-01
  • 2011-04-07
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多