Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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_Google Maps Api 3 - Fatal编程技术网

Javascript jQuery和谷歌地图自动完成

Javascript jQuery和谷歌地图自动完成,javascript,jquery,google-maps-api-3,Javascript,Jquery,Google Maps Api 3,我让Google Maps Autocomplete处理几个输入标记,如下所示: <input class="controls pac-input" id="pac-input" type="text" onfocus="geolocate()" placeholder="Type custom address" /> 然后,在MyFunc()函数中,我执行我需要的操作: function MyFunc() { var fullAddress = autocomplete

我让Google Maps Autocomplete处理几个
输入
标记,如下所示:

 <input class="controls pac-input" id="pac-input" type="text" onfocus="geolocate()" placeholder="Type custom address" />
然后,在
MyFunc()
函数中,我执行我需要的操作:

function MyFunc() {
    var fullAddress = autocomplete.getPlace().formatted_address;
    var input = $(this);
    //stuff that uses input
}
但是,该代码有两个问题:

  • 首先,我使用一个Id来影响多个输入框(我有许多输入字段)。我尝试按类选择,但失败,错误为“未定义”。如何将该函数应用于输入字段集合
  • 我如何知道正在单击哪个字段?我尝试使用jquery
    $(this)
    ,但它不起作用。jQuery如何帮助我

提前谢谢

为了找出调用的是哪个输入元素,可以将事件传递给
MyFunc()
。使用
$(this)
不会检查该函数的外部以查看调用它的内容

addListener
更新为以下内容

google.maps.event.addListener(autocomplete, 'place_changed', function (e) {
    MyFunc(e);
});`
并将
MyFunc()
更新为

function MyFunc(e) {
    var fullAddress = autocomplete.getPlace().formatted_address;
    var input = e;
    //stuff that uses input
}
然后,您可以使用
input
作为变量,保存有关正在更新的元素的信息。如果您执行
console.log(输入)var输入=e下方的code>您将看到可用于获取数据的项目列表

您可能最感兴趣的是设置
var input=e
var输入=e.target取而代之。这将允许您轻松获取有关输入的信息


示例:
input.value
将返回相关输入的值。

为了找出调用的是哪个输入元素,可以将事件传递给
MyFunc()
。使用
$(this)
不会检查该函数的外部以查看调用它的内容

addListener
更新为以下内容

google.maps.event.addListener(autocomplete, 'place_changed', function (e) {
    MyFunc(e);
});`
并将
MyFunc()
更新为

function MyFunc(e) {
    var fullAddress = autocomplete.getPlace().formatted_address;
    var input = e;
    //stuff that uses input
}
然后,您可以使用
input
作为变量,保存有关正在更新的元素的信息。如果您执行
console.log(输入)var输入=e下方的code>您将看到可用于获取数据的项目列表

您可能最感兴趣的是设置
var input=e
var输入=e.target取而代之。这将允许您轻松获取有关输入的信息


示例:
input.value
将返回相关输入的值。

您不需要jQuery来完成此操作。下面是一个仅使用javascript的工作示例:

HTML:


希望这能有所帮助。

您不需要jQuery来实现这一点。下面是一个仅使用javascript的工作示例:

HTML:


希望这有帮助。

请发布您的
MyFunc()
函数和输入。@RhapX:done!我按要求更新了帖子!为什么有多个输入?有什么意义?@MrUpsidown:我有一个包含多个地址的表,我希望用户能够指定它们。因此,每个条目都有一个输入字段供用户键入地址。请发布您的
MyFunc()
函数和输入。@RhapX:done!我按要求更新了帖子!为什么有多个输入?有什么意义?@MrUpsidown:我有一个包含多个地址的表,我希望用户能够指定它们。因此,每个条目都有一个输入字段供用户键入地址。当我尝试您的解决方案时,会出现
未定义的
错误:S有其他方法吗?当我尝试您的解决方案时,会出现
未定义的
错误:S有其他方法吗?确实有帮助!赏金
autocomplete.inputId=$(this.attr('id')正在搜索如何访问输入。我记不起我用过多少次了。。衣冠楚楚的确实有帮助!赏金
autocomplete.inputId=$(this.attr('id')正在搜索如何访问输入。我记不起我用过多少次了。。衣冠楚楚的
var acInputs = document.getElementsByClassName("autocomplete");

for (var i = 0; i < acInputs.length; i++) {

    var autocomplete = new google.maps.places.Autocomplete(acInputs[i]);
    autocomplete.inputId = acInputs[i].id;

    google.maps.event.addListener(autocomplete, 'place_changed', function () {
        console.log('You used input with id ' + this.inputId);
    });
}
$('.autocomplete').each(function() {

    var autocomplete = new google.maps.places.Autocomplete($(this)[0]);
    autocomplete.inputId = $(this).attr('id');

    google.maps.event.addListener(autocomplete, 'place_changed', function () {
        console.log('You used input with id ' + this.inputId);
    });
});