Javascript / ASP.net在下拉列表更改后触发事件

时间:2012-08-23 23:38:01

标签: javascript asp.net google-maps javascript-events

我有一个三个下拉列表国家/地区,城市和地区,其中包含初始空白选定值和一个html页面上的谷歌地图。我试图在用户从下拉列表中选择位置值时居中并放大地图。

所以这是一个我遇到问题的场景:

  1. 用户从国家/地区下拉列表中选择一个国家/地区。
  2. 我必须在下拉列表更改后检索所选的值。
  3. 触发事件以更新Google地图
  4. 我尝试使用onchange并更改javascript事件,但两者都导致从下拉列表中检索到的文本的值是在事件发送空文本(初始空白文本)到谷歌地图之前的文本值。

    那么,如何在下拉列表发生变化后触发事件?

    这是我的代码:

      <asp:DropDownList ID="DropDownList_Country" runat="server" Height="29px" Width="209px"
                                Font-Size="18px" CausesValidation="false" onchange="MapLocationUpdater();">
    
    
    function MapLocationUpdater() {
    
                    var address = getDropdownListAddress();
                    geocoder.geocode({ 'address': address },
                    function (results, status) {
                        if (status == google.maps.GeocoderStatus.OK) {
                            map.setCenter(results[0].geometry.location);
                            map.setZoom(11);
                            var marker = new google.maps.Marker({
                                map: map,
    
                                position: results[0].geometry.location
                            });
    
                        }
                        else {
                            alert("Geocode was not successful for the following reason: " + status);
                        }
                    }
                    );
                }
    
                function getDropdownListAddress() {
    
                    var ddlCountry = document.getElementById("<%=DropDownList_Country.ClientID%>");
                    var ddlCity = document.getElementById("<%=DropDownList_City.ClientID%>");
                    var ddlDistrict = document.getElementById("<%=DropDownList_District.ClientID%>");
    
                    var CountryTxt = ddlCountry.options[ddlCountry.selectedIndex].text;
                    var CityTxt = ddlCity.options[ddlCity.selectedIndex].text;
                    var DistrictTxt = ddlDistrict.options[ddlDistrict.selectedIndex].text;
    
                    return CountryTxt + " " + CityTxt + " " + DistrictTxt;
    
                }
    

1 个答案:

答案 0 :(得分:2)

试试这个:

<asp:DropDownList ID="DropDownList_Country" runat="server" Height="29px" Width="209px"
                        Font-Size="18px" CausesValidation="false" onchange="setTimeout('MapLocationUpdater();',1000);">