はわずかマイケルの上で、残念ながら、箱から出して動作しないにコードを修正マイ。私は "地理的なクライアント側の隠れたフィールド"を検索するときにGoogleがこの投稿に私を連れて来るので、これを強調することが重要だと思う。私は$ _GETを使用する私のサイトから次のコードを直接取っていますが、どちらの方法でも動作します。私たちは、フォームを起動します。
<form type="get" id='codeForm' action='index.php'>
<input type='text' name='search_location' id='search_location'>
<input type='text' name='search_term'>
<input type="submit" value="Search" id="submitform">
<input type='text' name='search_term'>
</form>
あなたが見ることができるように、私は、フォームからの隠し緯度とLNGの入力フィールドを離れて取り、下にjQueryを使ってそれらを追加しました:
<script type="text/javascript">
function codeAddress() {
myForm = document.forms["codeForm"];
//get the address
var geocoder = new google.maps.Geocoder();
var address = document.getElementById('search_location').value;
geocoder.geocode({'address': address, componentRestrictions:{country:"uk"}}, function(results, status) {
//geocode was successful
if (status == google.maps.GeocoderStatus.OK) {
//grab the lat and long
var lat = results[0].geometry.location.lat();
$("#codeForm").append("<input type='hidden' name='lat' value='" + lat + "' />");
var lng = results[0].geometry.location.lng();
$("#codeForm").append("<input type='hidden' name='lng' value='" + lng + "' />");
//submit form
} else {
//geocode failed
alert("Geocode was not successful for the following reason: " + status);
}
});
}
$(document).ready(function() {
$('#codeForm').submit(function(e) {
var form = this;
e.preventDefault();
codeAddress();
setTimeout(function() {
form.submit();
}, 1000); // in milliseconds
return false;
});
});
</script>
重要なポイント私のコードについては、this postのおかげで、私はsetTimeoutの遅延を追加したということです。遅延がなければ、私は上記のミハエルの解決策の値が時間内に追加されていないことを発見しました。
脚注として、私は私のソリューションでjavascriptとjqueryの組み合わせを改善することができると知っていますが、重要なことは実際の例です。
隠しフォームフィールドを追加してLatLng座標を保存できますか?あるいは、フォームコードを変更することはできませんか? – Zyava
はい私はフォームコードを変更し、隠しフォームフィールドを追加することができます。私のjavascriptはあまりにも良い – Nyxynyx