2012-11-22 3 views
0

다음을 사용하여 배달 우편 번호의 위도와 경도를 업데이트하십시오.JavaScript를 입력하면 텍스트가 삭제됩니까?

스크립트가 호출 될 때를 제외하고 코드는 입력 상자에서 우편 번호를 삭제합니다.

누군가이 이유를 말해 줄 수 있습니까?

<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> 
+0

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); 

어쩌면이 게시물에 그냥 오타입니다 ,'setTimeout()'에는'delay' 값이 없습니다. 따라서'getAddress()'가 바로 실행됩니다. – Teemu

+0

왜 setTimeout을 사용하고 있습니까? –

+0

이 코드에서 실제로 setTimeout을 사용하지 마십시오. 여러 개의 geoCode 요청을 생성 할 때 사용됩니다. 제거했습니다. –

답변

1

이는 UpdateGeo innerHTML 수정으로 인해 발생합니다. "innerHTML + ="문을 사용할 때마다 현재 내부 컨트롤 상태가 손실되고 원래 상태 (예 : html로 정적으로 선언 된 상태)로 되돌아갑니다.

당신은하지 문자열로하지만, 다음과 같은 control.appendChild()를 사용하여 동적으로 생성 요소를 추가해야

: 대신

var dcHiddenOutput = '<input type="hidden" name="lat" value="' +lat+ '"><input type="hidden" name="lng" value="' +lng+ '">'; 
document.getElementById("UpdateGeo").innerHTML += dcHiddenOutput;  
+0

감사합니다. LittleSweetSeas, 이제 완벽하게 작동합니다. 도움을 감사하십시오. –

+0

당신은 환영합니다 :) – LittleSweetSeas

관련 문제