2014-09-10 68 views
0

我有一個可拖動的標記,並且希望在標記移動時使用新的LatLng更新表單輸入。使用jQuery在Leaflet彈出窗口中設置表單輸入的值

在第一負載,彈出HTML包括

<input type="text" id="newLatLng" name="newLatLng" value=""> 

的拖拽事件是

marker.on('dragend', function(e) { 
    console.log('dragend'); 
    newLatLng = marker.getLatLng().lat + ' ' + marker.getLatLng().lng; 
    console.log(newLatLng); 
    $('#newLatLng').val(newLatLng); 
}); 

控制檯日誌顯示拖動事件和正確的值被獲取,但輸入值沒有被設置。

任何指針歡迎 - 我不禁感到我已經錯過了明顯的東西!

+0

您是否研究過彈出式初始化後html代碼的外觀?也許真正的'input'是隱藏的,並且使用一些包裝來顯示彈出窗口。 – Regent 2014-09-10 12:27:44

+0

您是否使用純傳單或使用任何支持庫,如MApBOX ... – 2014-09-10 12:31:08

+0

@Regent好點。但它看起來不錯''input type =「text」id =「newLatLng」name =「newLatLng」value =「」>' – jamesinealing 2014-09-10 12:35:29

回答

1

您的代碼在彈出窗口重新創建之前執行。要檢查這個想法,你可以將你當前的$('input[name="newLatLng"]').val(newLatLng);setTimeout約5秒延遲並檢查結果。全碼:

setTimeout 
(
    function() 
    { 
     $('input[name="newLatLng"]').val(newLatLng); 
    }, 
    5000 
); 

即使這個代碼僅用於測試,你可以使用這個想法通過設置超時時間小週期,檢查input所有腦幹創造問題的解決方法,如果還沒有存在等一下。類似這樣的:

(function check() 
{ 
    if ($('input[name="newLatLng"]').length) 
    { 
     $('input[name="newLatLng"]').val(newLatLng); 
     ... other related logic 
    } 
    else 
    { 
     setTimeout(check, 200); 
    } 
})();