将值传递到jQuery对话框内的表单输入字段



我在索引页面上有一个地图。我想单击地图并将标记放在位置。点击事件具有一个函数,我想打开模式(jQuery对话框),并从另一个孩子的HTML页面加载表单,而该位置现在填写在正确的form-field中。

我的问题是将值(标记位置)传递到表单中的输入字段。如果我将输入字段放在索引页面上的某个位置,而在对话框中的子模板中不在。

我正在尝试使用此 $('#test_input')。val(lng ',' lat); ,但它仅显示毫秒的值然后消失。您有什么想法为什么不起作用?还是如何重建这个?谢谢!

function onMapClick(e) {
      var lat = e.latlng.lat;
      var lng = e.latlng.lng;
      if (typeof marker != 'undefined') {
          map.removeLayer(marker);  
          marker = L.marker([lat, lng], {icon: redMarker}).addTo(map);
      }
      else {
          marker = L.marker([lat, lng], {icon: redMarker}).addTo(map); 
      }

      $('#upload-modal').load('upload/ #myform');
      $('#test_input').val(lng + ',' + lat);  //This is what I'm trying<---------- 
        $('#upload-modal').dialog({
              height: 550,
              width: 500,
              modal: false,
              buttons: {
                    Upload: function() { 
                        var dialog = $(this), 
                            form = $('#myform'),
                            data = form.serialize();
                    $('.off').remove(); 
                    $.ajax({ 
                        url: 'upload/',
                        data: data,
                        type: 'post',
                        success: function(response) {
                            res = $.parseJSON(response);
                            if (res['status'] == 'OK') {
                                alert('Thank you! Form has been submitted'); 
                                dialog.dialog('close'); 
                            }
                            else if (res['status'] == 'bad') {
                                delete res['status'] 
                                var errors = res; 
                                $.each(errors, function(key, value) {
                                    var err = $('<span></span>', {
                                                    'class': 'off',
                                                    'text': value
                                            }),
                                        br = $('<br></br>', {
                                            'class': 'off',
                                        }),
                                        input = $('#id_'+key).parent(); 
                                    br.appendTo(input);
                                    err.appendTo(input);
                                    err.css('color', 'red').css('font-size', '10px');
                                });
                            }
                        }
                      });
                    }
                  }
            });       
    }

看来#test_input在您的表格中,因此您必须等到另一个表单完全加载,请使用这样的回调:

$('#upload-modal').load('upload/ #myform', function(){
    $('#test_input').val(lng + ',' + lat);
});

最新更新