谷歌地点自动完成在Bootstrap模态框中不显示

34

修复更新: 看起来我初始化盒子的方式引起了问题, 以下是修复方法

 <script>
    $(function () {
        var input = document.getElementById("keyword");
        var autocomplete = new google.maps.places.Autocomplete(input);

        $('#my-modal').modal('show');

    });

</script>
<style>
    .pac-container {
        z-index: 10000 !important;
    }
</style>

更新:我已经将代码更新为非常简单的形式,这个http://jsfiddle.net/g8vxmLn9/1/能够工作的原因是因为它使用了较旧版本的bootstrap和jquery,所以我认为由于我使用了更新版本,所以我遇到了问题。

我只想在Bootstrap(3.3)模型中显示一个自动完成框,并且当您输入时显示结果。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Test</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-2.2.2.min.js" integrity="sha256-36cp2Co+/62rEAAYHLmRCPIych47CvdM+uTBJwSzWjI=" crossorigin="anonymous"></script>
<script src="https://maps.googleapis.com/maps/api/js?libraries=places">   </script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</head>
<body>
<div>
    <div id="my-modal" class="modal" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <input name="keyword" id="keyword" type="text" />
            </div>

        </div>
    </div>
</div>
<script>
    $(function () {
        $("#my-modal").modal({
            show: false
        }).on("shown", function () {
            var input = document.getElementById("keyword");
            var autocomplete = new google.maps.places.Autocomplete(input);

        });
        $('#my-modal').modal('show');
    });
</script>
</body>
</html>

JS中未定义id="map_canvas"。 - Shehary
@Shehary 我更新了代码,使其更简单,并且与画布无关,但仍然不起作用。 - Zoinky
6个回答

74

这样修复了它

<script>
    $(function () {
        var input = document.getElementById("keyword");
        var autocomplete = new google.maps.places.Autocomplete(input);

        $('#my-modal').modal('show');

    });

</script>
<style>
    .pac-container {
        z-index: 10000 !important;
    }
</style>

13
这对我来说有效。 - Parag Chaure
5
.pac-container 是 Google 自动完成结果的包装 div 元素。在这种情况下,模态框已经具有较高的 z-index 值。因此,您需要将 .pac-containerz-index 值设置为比模态框更高。 - Eranda

27
只需添加。
.pac-container {
    z-index: 10000 !important;
}

8
如果您仍在寻找相关的IT技术内容,请继续阅读。
                    var pacContainerInitialized = false; 
                    $('#inputField').keypress(function() { 
                            if (!pacContainerInitialized) { 
                                    $('.pac-container').css('z-index', '9999'); 
                                    pacContainerInitialized = true; 
                            } 
                    }); 

5

如果要与Angular 2+一起使用,请确保使用ng-deep。

  ::ng-deep .pac-container
  {
    z-index: 99999 !important;
  }

1
根据你的模态框的 z-index 值,你的 .pac-container 需要至少高出 1。
你的样式表应该包含:
.pac-container {z-index: 99999999999 !important;}

0

在加载窗口或文档准备就绪等情况下替换初始化函数。 解决方案:在地址输入框中添加onclick="initialize()"。 这很好!


目前你的回答不够清晰,请[编辑]以添加更多细节,帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接