1

私がやろうとしているのは、インポートされた郵便番号から緯度と経度を取得することです。1 つの入力 (最初または 2 番目の個別) のみに固執する限り、これは正常に機能します。両方で試してみると、うまくいきません。私は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");
}

私はここで完全に立ち往生しています。私は何を間違っていますか?どんな助けにも感謝し、事前に感謝します.

4

2 に答える 2

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 イベントからの戻り値として使用していた理由がわかりません。私の知る限り、 を使用するときに必要なように実行されません&&

編集: ああ、今何かが見えます: 最初の関数で localSearch 変数へのコールバックを設定していて、2 番目の関数でそれを上書きしています。そのためdocument.forms['latlon'].lat、anddocument.forms['latlon'].lonは決して値を変更しません。のみlat1lon1なります。(たぶん2回)

localSearch のような別の変数を作成し、それを 2 番目の関数に使用する必要があります。

または、おそらくより良いでしょう。コールバックが最初の関数からのものか、2 番目の関数からのものかをチェックインする必要があります。それが可能かどうかはわかりません。

于 2012-11-15T13:33:27.620 に答える