2012-11-15 48 views
1

我想要做的是从导入的邮政编码中获取纬度和经度。 只要我坚持只有一个输入(第一个或第二个单独的),哪个工作正常。 一旦我尝试使用它们,我无法使它工作。 我使用onchange事件..Javascript Onchange事件在表格中(从邮政编码获取经度和纬度)

请看看以下形式:

<form name="latlon" action="test2a.php" method='post' onchange="return usePointFromPostcode(document.getElementById('postcode').value) && usePointFromPostcode1(document.getElementById('postcode1').value) "> 
    <input id="postcode" type="text" size="10" /><br> 
    <input id="postcode1" type="text" size="10"/><br> 
    Latitude:<input name="lat" type="text" id="lat" size="10"/><br /> 
    Longitude:<input name="lon" type="text" id="lon" size="10"/><br><br> 
    Latitude:<input name="lat1" type="text" id="lat1" size="10"/><br /> 
    Longitude:<input name="lon1" type="text" id="lon1" size="10"/> 
    <input type="submit" value="Get Lat/Lon"/> 
</form> 

,并在JavaScript中,这是我用来获取经纬度:

function usePointFromPostcode(postcode, callbackFunction) { 
    localSearch.setSearchCompleteCallback(null, 

    function() { 

     if (localSearch.results[0]) { 
      var resultLat = localSearch.results[0].lat; 
      var resultLng = localSearch.results[0].lng; 
      var point = new GLatLng(resultLat, resultLng); 
      document.forms['latlon'].lat.value = resultLat; 
      document.forms['latlon'].lon.value = resultLng; 
      callbackFunction(point); 
     } else { 
      alert("Postcode not found!"); 
     } 
    }); 

    localSearch.execute(postcode + ", UK"); 
} 

function usePointFromPostcode1(postcode1, callbackFunction) { 

    localSearch.setSearchCompleteCallback(null, 

    function() { 

     if (localSearch.results[0]) { 
      var resultLat = localSearch.results[0].lat; 
      var resultLng = localSearch.results[0].lng; 
      var point = new GLatLng(resultLat, resultLng); 
      document.forms['latlon'].lat1.value = resultLat; 
      document.forms['latlon'].lon1.value = resultLng; 
      callbackFunction(point); 
     } else { 
      alert("Postcode not found!"); 
     } 
    }); 

    localSearch.execute(postcode1 + ", UK"); 
} 

我完全陷在这里。我究竟做错了什么? 将提前感谢您的任何帮助,并感谢您。

+0

也许我还不够清楚这里... 所有我想要的是输入2 postodes的形式,所以我可以得到他们的经纬度和传递这些值到另一个页面,(隐藏输入被使用) 即时通讯没有那么多的JavaScript,但也许有一些其他的方式... 问题是在表格(获得纬度/经度很好) 任何建议... 谢谢你 – Nita

回答

0

尝试改变

<form name="latlon" action="test2a.php" method='post' onchange="return usePointFromPostcode(document.getElementById('postcode').value) && usePointFromPostcode1(document.getElementById('postcode1').value) "> 

<form name="latlon" action="test2a.php" method='post' onchange="usePointFromPostcode(document.getElementById('postcode').value); usePointFromPostcode1(document.getElementById('postcode1').value); "> 

我不知道为什么你使用它作为onchange事件的回报。据我所知,使用&&时不会像你想要的那样执行。

编辑: 啊,我现在看到的东西:你是一个回调设置在第一功能的本地搜索变量,你在第二个函数覆盖它。这就是为什么document.forms['latlon'].latdocument.forms['latlon'].lon永远不会改变价值。只有lat1lon1会。 (可能是两次)

您必须创建另一个像localSearch这样的变量并将其用于第二个函数。

或者最可能更好;你将不得不检查你的回调是来自第一个函数还是来自第二个函数。我不确定这是否可能。

+0

谢谢你的建议,固定onchange,仍然不工作,因为我shuld ..没有什么不同,然后我害怕..第二个输入(postcode1)完美的作品,第一个输入(postode )确实奇怪.. – Nita

+0

我已经更新了我的答案,请检查。 – Martin

0

作品,但并不完美....

<input type="text" size="5" name="postcode1" id="postcode1" maxlength="4" style="width: 32px" onchange="usePointFromPostcode(document.getElementById('postcode1').value)" > 

<input type="text" size="5" name="postcode2" id="postcode2" maxlength="4" style="width: 32px" onchange="usePointFromPostcode1(document.getElementById('postcode2').value)"> 

任何建议....

相关问题