2

いくつかの入力から値を取得し、フォームをまったく送信せずにフォームの外側のテキスト領域に渡そうとしていますが、これは同じページで行われます。入力に情報を入力するときにテキスト領域にデータを入力するため、JavaScriptを使用しています。これは、そのテキスト領域をアドレスとして使用して、地図上にマークを付けるためです。以下は、アドレスの値をテキスト領域に渡すために必要なコードの一部です。私は、テキスト領域に値を表示するためにコードの次の部分で助けを求めているjavascriptの人ではないからです。

function getaddress() {
var direccion = document.getElementsByName("direccion").value;
var colonia = document.getElementsByName("colonia").value;
var ciudad = document.getElementsByName("ciudad").value;
var estado = document.getElementsByName("estado").value;
var pais = "Mexico";
var zip = document.getElementsByName("zip").value;
var address = direccion, colonia, ciudad, estado, pais, zip;
}

上記の関数の値がテキスト領域に入力されたら、IDアドレスを追加してテキストを取得し、地図上にマーカーを表示できます。マップのコードは以下のとおりです

function codeAddress() {

var address = document.getElementById("address").value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
     map: map,
     draggable: false,
     position: results[0].geometry.location
});

皆さん、よろしくお願いします。

4

3 に答える 3

3

vforライブ転送使用キーアップイベント:

document.getElementById('x').keyup(function(){
    document.getElementById('y').value = this.value;
});

またはjqueryでさらに簡単に:

$('#x').bind('keyup', function(){
    $('#y').val($(this).val());
});
于 2012-12-11T02:43:32.770 に答える
1

私の考えでは、アドレスフィールドを更新する最も簡単な方法は、問題の入力要素を含むフォームでキーアップイベントを処理することです。

function getaddress() {
    var direccion = document.getElementById("direccion").value;
    var colonia = document.getElementById("colonia").value;
    var ciudad = document.getElementById("ciudad").value;
    var estado = document.getElementById("estado").value;
    var pais = "Mexico";
    var zip = document.getElementById("zip").value;
    document.getElementById("address").value =
          direccion + " " + colonia + " " + ciudad + "\n" +
          estado + " " + pais + " " + zip;
};

document.getElementById("addressForm").onkeyup = getaddress;

デモ: http: //jsfiddle.net/P9ErU/

キーアップイベントは、ユーザーが入力していた入力から含まれている要素に(そして最終的にはドキュメントに至るまで)「バブルアップ」するため、特にこの場合は、各入力を個別に処理する必要はありません。ユーザーがどの入力を入力しても同じことです。

あなたが投稿したコードから始めて、次の変更を加えました。

  • 入力にIDを指定し、document.getElementById()ではなく使用しますgetElementsByName()。後者は(潜在的に)多くの要素を返すことを目的としており(したがって、名前に複数の「要素」が含まれます)、実行していることにはあまり適していません。

  • +演算子(ではなく)を使用して,、値を連結します。必要に応じて、私のコードに示されているように、スペースや改行文字も入れてください(適切でない場合は、その部分を簡単に削除できます)。

  • 結果のテキストをtextareaに入れます。

  • フォームにはIDがあると想定しましたが、"addressForm"必要に応じて変更できることは明らかです。

于 2012-12-11T03:42:28.380 に答える
0

ジオコード関数で発生する遅延のため、キーを押すたびにデータを処理することはお勧めしません。ユーザーが入力している間、複数の地理コード要求を送信します。他のリクエストが処理されている間は送信されないリクエストがあり、アドレスの半分をジオコーディングすることになります。それが機能する場合、ユーザーは住所の一部しか入力していないため、マーカーは地図上をジャンプします。

私のアドバイスは、ユーザーがフィールドに入力する準備ができたときにクリックできるボタンを配置することです。

無料ユーザーとしてジオコード関数を呼び出すことができるのは1日2500回のみであることに注意してください。

于 2012-12-11T02:49:20.980 に答える