Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery获取输入值以检索匹配的数组值以填充隐藏的输入_Javascript_Jquery_Arrays_Forms_Extract - Fatal编程技术网

Javascript jquery获取输入值以检索匹配的数组值以填充隐藏的输入

Javascript jquery获取输入值以检索匹配的数组值以填充隐藏的输入,javascript,jquery,arrays,forms,extract,Javascript,Jquery,Arrays,Forms,Extract,正在寻找有关用于提取存储在数组中的lat/long值的表单的指导信息。代码示例不完整(抱歉),只是处于粗略阶段 <script type="text/javascript"> $document.ready(function(){ var geoCity = [ { 'Toronto', '43.6532', '-79.3831'}, { 'Vancouver', '49.2612', '-123.1139'}, { 'Calg

正在寻找有关用于提取存储在数组中的lat/long值的表单的指导信息。代码示例不完整(抱歉),只是处于粗略阶段

<script type="text/javascript">
$document.ready(function(){
    var geoCity = [
        { 'Toronto', '43.6532', '-79.3831'},
        { 'Vancouver', '49.2612', '-123.1139'},
        { 'Calgary', '51.04532', '-114.0581'}
    ];
});
</script>

$document.ready(函数(){
变量地质性=[
{‘多伦多’、‘43.6532’、‘79.3831’},
{‘温哥华’、‘49.2612’、‘123.1139’},
{‘卡尔加里’、‘51.04532’、‘114.0581’}
];
});
当输入city字段时(实际使用bootstrap在实际表单上的typeahead),需要使用输入的值(在提交表单之前)搜索数组,提取匹配的lat/long值,并将其输入各自的隐藏输入字段

<input type="text" id="city" name="city" value="" />
<input type="hidden" id="latitude" name="latitude" value="" />
<input type="hidden" id="longitude" name="longitude" value="" />


希望有人能为我指明正确的方向。

您需要更改geoCities对象的结构,如下所述:

$(function () {
    var geoCity = [{
        'city': 'Toronto',
        'location': ['43.6532', '-79.3831']
    }, {
        'city': 'Vancouver',
        'location': ['49.2612', '-123.1139']
    }, {
        'city': 'Calgary',
        'location': ['51.04532', '-114.0581']
    }];

    $("#city").blur(function () {
        $("#latitude").val("");
        $("#longitude").val("");
        var curCity = $("#city").val();
        var location = $.map(geoCity, function (itm) {
            if (itm.city === curCity) 
                return itm.location; 
        });
        if(location) {
            $("#latitude").val(location[0]);
            $("#longitude").val(location[1]);
        }
    });
});
JsFiddle:


您可以
$(“#城市”)。最近的(“表单”)。提交
而不是
$(“#城市”)。模糊

是的,更改数据结构。然后将输入值与对象键关联

$(function () {
    var geoCity = {
        'Toronto': {
            'lat': '43.6532',
            'lon': '-79.3831'
        },

        'Vancouver': {
            'lat': '49.2612',
            'lon': '-123.1139'
        },

        'Calgary': {
            'lat': '51.04532',
            'lon': '-114.0581'
        }
    };

    $('#button').click(function () {
        var lat, lon, city = $('#city').val();
        if (city) {
            lat = geoCity[city].lat;
            lon = geoCity[city].lon;
            $('#latitude').val(lat);
            $('#longitude').val(lon);
        }
    });
});

Thx Chandu,如果要引用90多个城市,您会用地理城市数组值更改任何内容吗?Thx Jeffman,我在上面提出的问题相同……如果要引用90多个城市,您会用地理城市数组值更改任何内容吗?不会太多。它们看起来很笨重,因为空间太大,但可以去掉。如果您将键和值放在“双引号”中,那么它将是JSON格式的。这将有助于在PHP或其他服务器环境中创建对象。我已经根据你的答案和Chandu的答案改编了期末考试。使用模糊功能,但如果没有为城市输入,还可以将lat/long设置为空。这是最后一把小提琴-