2011-09-23 18 views
2

我想从GMap信息窗口触发jQuery。我有我的GMAP这些代码:如何从GMaps infowindow触发jQuery

var theContent = "<form action='#' method='post' onSubmit='return false;'><input type='text' name='firstname' />"; 
theContent += "<input type='submit' value='Save' /></form>"; 

var infowindow = new google.maps.InfoWindow({  
    content: theContent 
}); 
infowindow.open(map, marker); 

而且这些代码的jQuery:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type='text/javascript'> 
    $(document).ready(function() { 
     $('form').bind('submit',function() { 
      var str = $('form').serialize(); 

      $.ajax({ 
       type: "POST", 
       url: "save.php", 
       data: str, 
       success: function(msg){ 
        alert('Saved!'); 
       } 
      }); 

      return false; //so the page won't refresh 
     }); 
    }); 
</script> 

的问题是,我的输入信息窗口的文本框不保存,这就是为什么我认为jQuery的ISN” t触发GMap infowindow/bubble。

当我尝试GMap之外的窗体时,它工作正常。

感谢您的帮助!

回答

1

现在,jQuery代码绑定到文档上的表单,但不一定当信息窗口打开时。因此,当infowindow甚至不是DOM的一部分时,就可能绑定到表单,这是不可能的。您需要:

  1. 呼叫$('form').bind(...)右后infowindow.open(...)
  2. 变化$('form').bind(...)$('form').live(...)。这将针对页面上的所有现在和未来表单。
+0

它的工作原理,谢谢! :) – Emkey

+0

同样的情绪,但轻松提供代码示例。我实际上并没有意识到'.live'的绑定,很好理解。 – Kasaku

0

什么时候InfoWindow被创建,即什么时候执行了顶级脚本?这里没有足够的信息可以告诉,但可能的原因可能是因为您正在尝试使用jQuery在表单创建之前绑定到表单提交。

尝试绑定到窗体,一旦你创建了InfoWindow。

+0

感谢您的回复@PirateKitten,infowindow在我的window.onload = function(){initialize(); }; – Emkey