在初始化时调用地理编码功能,但在onclick脚本中调用

时间:2009-12-04 10:12:49

标签: javascript onclick geocoding

我正在使用google maps API进行一些地理编码。 用户填写带有一些地址的表单,当单击提交按钮时,将调用codeAddress()函数,该函数应该执行地理编码,但它不起作用。 作为测试,我在初始化()中的文件硬编码地址并调用codeAddress函数。 当页面准备就绪时调用codeAddress,它可以正常工作,但是当它被onclick脚本调用时,它不起作用(firebug没有返回任何错误!)。

有人可以帮忙吗? 感谢

(您可以将代码粘贴到此处:http://code.google.com/apis/ajax/playground/?exp=maps#map_simple,或更改google api密钥)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps API Sample</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"></script>
<script type="text/javascript">

function initialize() {
  if (GBrowserIsCompatible()) {

    var map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(37.4419, -122.1419), 13);

    codeAddress(); 
  }

}

function codeAddress() {
    var geocoder = new GClientGeocoder();
    var address = "paseo montjuic, 30, barcelona, spain";
    geocoder.getLatLng( address, function(point) {

        if (point) {
            alert(point);
        } else {
            alert("Geocode was not successful");
        }
     });
 }


</script>
</head>
<body onload="initialize()" onunload="GUnload()" style="font-family: Arial;border: 0 none;">
<div id="map_canvas" style="width: 500px; height: 300px"></div>


<form action="" method="POST">
<!-- stuff -->
<input type="Submit" value="Submit" onclick="codeAddress();" />
</form>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

codeAddress();事件调用onclick后立即向我看,您的POST立即完成。因此,它看起来代码失败了,但实际上它正在运行。

你能做的是:

1)使用onclick事件删除表单,只需一个按钮。例如:

<input type="button" value="Submit" onclick="codeAddress();" />

2)通过添加return false;,在事件onclick命中时禁用提交表单。例如:

<form action="" method="POST">
<!-- stuff -->
<input type="Submit" value="Submit" onclick="codeAddress();return false;" />
</form>