2011-09-23 17 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