jquery
  • google-maps
  • 2010-01-29 83 views 5 likes 
    5

    我已經添加了用戶在我的谷歌地圖上添加新點的功能。我的代碼:谷歌地圖:openInfoWindowHtml與jQuery問題

    GEvent.addListener(map, "click", function(overlay,point) { 
        if (point) { 
         var myHtml = '<div id="addpoint"><form id="formadd" name="formadd_point" enctype="multipart/form-data" method="post" action="pointadd.php"><table><tr><td>Place:</td><td>' + point + '</td></tr><tr><td>Name:</td><td><input name="name" type="text" size="32" maxlength="200" /></td></tr><tr><td>Photo (jpg,png:2Mb):</td><td><input type="file" name="image" size="20" accept="image/png,image/jpeg" /></td></tr><tr><td></td><td><input name="pcoord" type="hidden" value="'+point+'" /><input type="hidden" name="MAX_FILE_SIZE" value="2000000" /><input name="subpoint" type="submit" value="Add" /></td></tr></table></form></div>'; 
         map.openInfoWindowHtml(point, myHtml); 
         $('#formadd').ajaxForm({ beforeSubmit: validate, target:'#addpoint' }); 
        } 
    }); 
    

    它應該是AJAX後沒有重新加載。但它不工作!我不知道爲什麼。也許有一些衝突jquery.js和谷歌API?如何提交表單而無需重新加載頁面?

    回答

    1

    也許你試着添加eventListener來形式表單html成功添加dom之前。試試這個:

    GEvent.addListener(map, "click", function(overlay,point) { 
        if (point) { 
         $('#formadd').live("load", function(){ 
          $(this).ajaxForm({ beforeSubmit: validate, target:'#addpoint' }); 
         }); 
    
         var myHtml = '<div id="addpoint"><form id="formadd" name="formadd_point" enctype="multipart/form-data" method="post" action="pointadd.php"><table><tr><td>Place:</td><td>' + point + '</td></tr><tr><td>Name:</td><td><input name="name" type="text" size="32" maxlength="200" /></td></tr><tr><td>Photo (jpg,png:2Mb):</td><td><input type="file" name="image" size="20" accept="image/png,image/jpeg" /></td></tr><tr><td></td><td><input name="pcoord" type="hidden" value="'+point+'" /><input type="hidden" name="MAX_FILE_SIZE" value="2000000" /><input name="subpoint" type="submit" value="Add" /></td></tr></table></form></div>'; 
         map.openInfoWindowHtml(point, myHtml); 
    
        } 
    }); 
    
    +0

    非常感謝您的回答。我花了很多時間試圖瞭解問題所在。這是我的頭痛。即使我在map.openInfoWindowHtml之後編寫代碼,您的代碼仍在運行!唯一的問題是我必須點擊兩次提交按鈕。首次點擊後沒有任何反應。表單在第二次點擊後由Ajax發送。 非常感謝您幫助解決這個問題! – SPnova 2010-02-05 11:43:15

    +0

    我不確定ajaxForm插件如何運行,但我想象什麼是問題。我寫的第一個eventHandler添加了一個處理程序來提交事件並返回false。我認爲ajaxForm插件添加eventHandler來處理表單的提交。所以第一次點擊除了運行ajaxForm事件處理程序外什麼都不做。然後點擊ajaxForm處理程序的觸發器。 如果你可以找到一個解決方案來通過實時事件添加ajaxForm eventHandler,你的問題就會消失。 – 2010-02-05 14:28:03

    +0

    我改變了我的代碼。也許這會起作用。 – 2010-02-05 14:30:44

    相關問題