0

我有一个联系页面,他们在国家/地区有多个分支机构。因此,尝试过滤位置并在城市选择上应该显示带有信息窗口的标记。我的问题是,如果我直接选择城市,它可以工作,但是当通过文件管理器下拉列表时它不起作用。请就我做错了什么提出建议。

这是我的链接http://www.safarikidindia.com/demo_map.html

这是我的代码

在国家下拉列表中,我调用 onchange='generatestate(this)'> 并在状态下拉列表中生成城市。这是ajax功能代码

function generatestate(o)
 {

set_current_date_time()
http.abort();
document.getElementById('locationstate').innerHTML = '';
document.getElementById('locationcity').innerHTML = '';
var url = "common_ajax.php?action=showstate&countryid="+o.options[o.selectedIndex].value;
    //alert(url);
  http.open("GET", url, true);
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
            //alert(http.responseText);
            //var response = http.responseText;

              document.getElementById('locationstate').innerHTML = http.responseText;
        //    alert(http.responseText);

    }
  }
  http.send(null);


 }



  function geneeratecity(o)
 {

set_current_date_time()
http.abort();
document.getElementById('locationcity').innerHTML = '';

var url = "common_ajax.php?action=geneeratecuty&stateid="+o.options[o.selectedIndex].value;
    //alert(url);
  http.open("GET", url, true);
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
            //alert(http.responseText);
            //var response = http.responseText;

              document.getElementById('locationcity').innerHTML = http.responseText;
            //alert(http.responseText);

    }
  }
  http.send(null);


 }



 ////////////////////////////////

在 common_ajax 我们有以下 php 函数

      if($action=="showstate")
 {
$countryid = trim(filter_var($_REQUEST['countryid'], FILTER_SANITIZE_STRING));
$state = $safari->country_state_location($countryid);

?>
<select name="city" id="city" class="drpdown" onchange="geneeratecity(this);">
          <option value="">Select State</option>
          <?php 

          for($i=0;$i<count($state);$i++)
          {

          $statename = $safari->get_singlestate($state[$i]['state'])
          ?>
                 <option value="<?php echo $statename[0]['statesrno'];?>"><?php echo     $statename[0]['statename'];?></option>
          <?php
          }
          ?>


        </select>
<?php 

 }

 if($action=="geneeratecuty")
 {
$stateid = trim(filter_var($_REQUEST['stateid'], FILTER_SANITIZE_STRING));
$locations = $safari->country_city_location($stateid);

?>

        <select name="city" class="city" id="city">
          <option value="" selected>--- Select ---</option>

                       <?php 

        for($l=0;$l<count($locations);$l++)
        { ?>
        <option value="marker<?php echo $locations[$l]['srno'];?>"><?php echo $locations[$l]['city'];?></option>





        <?php } ?>
        </select>




     <?php 

 }

  ?>
4

1 回答 1

0

更改侦听器绑定到您调用时存在的#city-element initialize。当你过滤列表时,这个元素会被覆盖,新创建的 select 不会监听监听器。

可能有不同的方法来修复它,但你已经使用了 jQuery,所以我建议使用 jQuery'son()而不是google.maps.event.addDomListener

jQuery(document).on('change','#city',
  function(){
    //your code
  }
);
于 2013-08-17T09:15:30.590 回答