如何从GMaps infowindow触发jQuery

时间:2011-09-23 10:33:10

标签: javascript jquery google-maps

我想从GMap信息窗口触发jQuery。我有这些代码用于我的GMap:

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>

问题是,我对infowindow文本框的输入没有保存,这就是为什么我认为jQuery不会在GMap infowindow / bubble内部触发。

当我在GMap之外尝试表单时,它运行正常。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

  1. $('form').bind(...)
  2. 之后调用infowindow.open(...)
  3. $('form').bind(...)更改为$('form').live(...)。这将针对页面上的所有当前和未来表单。

答案 1 :(得分:0)

InfoWindow何时被创建,即该顶级脚本何时被执行?这里没有足够的信息来讲述,但可能的原因可能是因为您在创建该表单之前尝试使用jQuery绑定到表单提交。

创建InfoWindow后尝试绑定到表单。