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 实时传输使用 keyup 事件:

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

在我看来,更新地址字段的最简单方法是在包含相关输入元素的表单上处理keyup 事件:

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/

Keyup 事件从用户输入的输入“冒泡”到他们的包含元素(最终一直到文档),因此您不需要单独处理每个输入,尤其是在这种情况下您想要做无论用户输入哪个输入,都是一样的。

我从您发布的代码开始,并进行了以下更改:

  • 给输入一个 id 并使用document.getElementById()而不是getElementsByName()- 后者旨在(可能)返回许多元素(因此其名称中的复数“元素”)并且并不真正适合您正在做的事情。

  • 使用+运算符 (not ,) 将值连接在一起。如果合适的话,也可以放入一些空格和/或换行符,如我的代码所示(如果不合适,很容易删除该部分)。

  • 将生成的文本放入文本区域。

  • 我假设表单有一个 id "addressForm",但显然你可以适当地改变它。

于 2012-12-11T03:42:28.380 回答
0

我不建议在按下每个键时处理数据,因为地理编码功能会出现滞后。您将在用户键入时发送多个地理编码请求。可能在处理其他请求时不会发送某些请求,这将使您最终对半个地址进行地理编码。如果它确实有效,则标记将在地图上跳来跳去,因为用户只输入了地址的一部分。

我的建议是放置一个按钮,用户可以在准备填写字段时单击。

请记住,作为免费用户,您每天只能调用地理编码功能 2500 次。

于 2012-12-11T02:49:20.980 回答