使用jQuery在Leaflet弹出窗口中设置表单输入的值

时间:2014-09-10 12:17:44

标签: jquery leaflet

我有一个可拖动的标记,并希望在移动标记时使用新的LatLng更新表单输入。

首次加载时,Popup 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);
 });

控制台日志显示正在提取拖动事件和正确的值,但未设置输入值。

欢迎任何指示 - 我不禁觉得我错过了一些明显的东西!

1 个答案:

答案 0 :(得分: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);
    }
})();