1

Google プレイスのオートコンプリートを使用する必要がある 2 つのテキスト ボックスがあります。これらのテキストボックスは、ページの読み込み時に非表示になるパネルに含まれています。選択するオプションのリストがあり、そのユーザー入力が取得されると、非表示のパネルが表示されます。私は両方を試しました

    Panel.visible = false; 

    Panel.Style["display"] = "none";
    Panel.Style["visibility"] = "hidden";

しかし、どちらも機能しません。パネルが非表示になると、テキスト ボックスのオートコンプリートが機能しなくなります。最初はパネルを表示できません。これに対する回避策はありますか?特定のポストバック後にオートコンプリートをトリガーできますか? それとも他の方法ですか?オートコンプリートに使用しているJavaScriptは次のとおりです

    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script>
<script type="text/javascript">
    var defaultBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(7.623887, 68.994141),
    new google.maps.LatLng(37.020098, 97.470703));
    var input1 = document.getElementById('ctl00_ReportContentPlaceHolder_txtLocality1');
    var input2 = document.getElementById('ctl00_ReportContentPlaceHolder_txtLocality2');
    var options = {
        bounds: defaultBounds,
        types: ['geocode'],
        componentRestrictions: { country: "IN" }
    };
    autocomplete1 = new google.maps.places.Autocomplete(input1, options);
    autocomplete2 = new google.maps.places.Autocomplete(input2, options);

</script>
4

1 に答える 1

0

私はついに私の問題を解決しました...ここで答えを見つけました: https://stackoverflow.com/a/8851767/972821

ポストバック後にJavaScriptを再初期化する必要があることに気づきました...しかし、それがどのように行われたかはわかりませんでした.Aristosに感謝します。これが私の変更されたコードです:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script>
<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);

    function InitializeRequest(sender, args) {
    }

    // fires after the partial update of UpdatePanel
    function EndRequest(sender, args) {
        initialize();
    }
    function initialize() {
        var defaultBounds = new google.maps.LatLngBounds(
        new google.maps.LatLng(7.623887, 68.994141),
        new google.maps.LatLng(37.020098, 97.470703));

        var input1 = document.getElementById('ctl00_ReportContentPlaceHolder_txtLocality');
        var input2 = document.getElementById('ctl00_ReportContentPlaceHolder_txtDropLocality');
        var options = {
            bounds: defaultBounds,
            types: ['geocode'],
            componentRestrictions: { country: "IN" }
        };
        autocomplete1 = new google.maps.places.Autocomplete(input1, options);
        autocomplete2 = new google.maps.places.Autocomplete(input2, options);
    }
</script>
于 2013-05-21T10:38:18.047 に答える