javascript - selectize.js 远程填充其他输入

标签 javascript jquery json google-maps

我有一个选定的输入#location,用户在其中输入他的位置,并显示 google geocoding api 中的下拉选项。 .

效果很好,但现在我想要的是当用户选择一个建议位置时填充另一个输入#latitude

我可以使用此代码部分完成此操作:

$('#location').selectize({
        valueField: 'formatted_address',
        labelField: 'formatted_address',
        searchField: 'formatted_address',
        maxItems: 1,
        delimiter: ';',
        create: false,
        load: function (query, callback) {
            if (!query.length) return callback();
            $.ajax({
                url: "googleloc",
                type: 'GET',
                dataType: 'json',
                data: {
                    search: query,
                },
                error: function () {
                    callback();
                },
                success: function (res) {
                    callback(res.results);
                }
            });
        }

    });

    $('#location').on('change', function () {
        var test = $('#location').selectize()[0].selectize.getValue();
        $('#latitude').val(test);
    });

我的问题是,这段代码使用 'formatted_address' 填充 #latitude 输入,但没有填充纬度,正如您在下面的 json 中看到的那样加载选项返回的内容位于几何>位置>纬度下。

返回的 json 示例如下:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "French Polynesia",
               "short_name" : "PF",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "French Polynesia",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : -7.8955619,
                  "lng" : -138.6091323
               },
               "southwest" : {
                  "lat" : -23.9062409,
                  "lng" : -153.9919066
               }
            },
            "location" : {
               "lat" : -17.679742,
               "lng" : -149.406843
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : -17.4943169,
                  "lng" : -149.1247993
               },
               "southwest" : {
                  "lat" : -17.8803223,
                  "lng" : -149.6211207
               }
            }
         },
         "place_id" : "ChIJTddtfNB1GHQREVfDCXp6wJs",
         "types" : [ "country", "political" ]
      }
   ],
   "status" : "OK"
}

编辑:a jsfiddle使用 github api,我无法使用 google map api 创建一个,因为您需要一个我不想共享的 key :)

最佳答案

感谢@Comte评论,我成功完成了它,这是解决方案

$('#location').selectize({
        valueField: 'formatted_address',
        labelField: 'formatted_address',
        searchField: 'formatted_address',
        maxItems: 1,
        delimiter: ';',
        create: false,
        load: function (query, callback) {
            if (!query.length) return callback();
            $.ajax({
                url: "googleloc",
                type: 'GET',
                dataType: 'json',
                data: {
                    search: query,
                },
                error: function () {
                    callback();
                },
                success: function (res) {
                    callback(res.results);
                    googresults = res.results;
                }
            });
        },
        onChange: function (value) {
            if (!value.length) return;
            for (var key in googresults) {
                if (googresults[key].formatted_address == value) {
                    var lat = googresults[key].geometry.location.lat;
                    var lng = googresults[key].geometry.location.lng;
                }

            }
            $('#latitude').val(lat);
            $('#longitude').val(lng);
        }

    });

关于javascript - selectize.js 远程填充其他输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33798018/

相关文章:

javascript - 仅在屏幕上显示 DIV

javascript - Backbone.js - render() 在我在控制台中输入之前不起作用

jquery - Bootstrap 4 下拉菜单从第一个菜单位置开始

php - JSON 概念与 JavaScript 和 PHP

jQuery UI 自动完成 JSON 给出错误 : Uncaught TypeError: Cannot use 'in' operator to search for '62' in

javascript - SAPUI5 SmartFilterBar 过滤器类型概述

javascript - 删除循环中的动态图像

javascript - 如何更改 extjs 容器的 css 类

javascript - 通过 jquery 获取和设置图像 URL

ios - 如何快速修复 HTTPBODY 的这些参数?