我想从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之外尝试表单时,它运行正常。
感谢您的帮助!
答案 0 :(得分:1)
现在,jQuery代码绑定到文档准备好的表单,但不一定在信息窗口打开时。因此,当infowindow甚至不是DOM的一部分时,你可能会绑定到表单,这是不可能的。你需要:
$('form').bind(...)
或infowindow.open(...)
$('form').bind(...)
更改为$('form').live(...)
。这将针对页面上的所有当前和未来表单。 答案 1 :(得分:0)
InfoWindow何时被创建,即该顶级脚本何时被执行?这里没有足够的信息来讲述,但可能的原因可能是因为您在创建该表单之前尝试使用jQuery绑定到表单提交。
创建InfoWindow后尝试绑定到表单。