jquery
  • google-maps
  • 2010-01-29 63 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

    相关问题