2012-11-15 121 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)"> 

任何建議....

相關問題