0

我使用以下内容更新递送邮政编码的纬度和经度。

代码运行良好,除非调用脚本时它会从输入框中删除邮政编码。

有人能告诉我这是为什么吗?

<script type="text/javascript">
//<![CDATA[
  var geo = new GClientGeocoder(); 
  function getAddress(search) {
    geo.getLocations(search, function (result)
      { 
        if (result.Status.code == G_GEO_SUCCESS) {
          var p = result.Placemark[0].Point.coordinates;
          var lat=p[1];
          var lng=p[0];
          var dcMessage = '<span style="color:#990000">Post Code Successfully GeoCoded</span>'
          var dcHiddenOutput = '<input type="hidden" name="lat" value="' +lat+ '"><input type="hidden" name="lng" value="' +lng+ '">';
          document.getElementById("ConfirmOrder").innerHTML += dcMessage;
          document.getElementById("UpdateGeo").innerHTML += dcHiddenOutput;
        } 
      }
    );
  }
  function theNext() {
    var addresses = document.getElementById("myInput").value;
      getAddress(addresses);
  }
//]]>
</script>

<form id="UpdateGeo" method="get" action="updateGeocode.asp">
<input id="myInput" name="PostCode" style="text-transform:uppercase" />&nbsp;
<input type="checkbox"  onClick="theNext()">&nbsp;
<input type="submit" value="Update Database">
</form>
4

1 回答 1

1

这是由 UpdateGeo innerHTML 修改引起的。每当您使用“innerHTML +=”语句时,当前的内部控件状态都会丢失,并将恢复到原始状态(例如,在 html 中静态声明的状态)。

您应该不是通过字符串,而是通过使用 control.appendChild() 来附加动态创建的元素,如下所示:

var container = document.getElementById('UpdateGeo');
var element = document.createElement('input');
element.setAttribute('type','hidden');
element.setAttribute('name','lat');
element.value = lat;
container.appendChild(element);

element = document.createElement('input');
element.setAttribute('type','hidden');
element.setAttribute('name','lng');
element.value = lng;
container.appendChild(element);

代替

var dcHiddenOutput = '<input type="hidden" name="lat" value="' +lat+ '"><input type="hidden" name="lng" value="' +lng+ '">';
document.getElementById("UpdateGeo").innerHTML += dcHiddenOutput;    
于 2012-11-22T11:44:41.930 回答