2014-01-28 2 views
0

У меня есть карта на моей индексной странице. Я хочу щелкнуть по карте и поместить маркер в позицию. Событие click имеет функцию, в которой я хочу открыть модальный (диалоговое окно jquery) и загрузить форму с другой дочерней html-страницы с положением, которое теперь заполнено в правильном поле формы.Передача значения в поле ввода формы внутри диалогового окна jquery?

Моя проблема заключается в передаче значения (позиции маркера) в поле ввода в форме. Моя функция работает, если я помещаю поле ввода где-то на индексной странице, но не в дочерний шаблон в диалоговом окне.

Я пытаюсь с этим $ ('# 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'); 

           }); 
          } 
         } 

         }); 

        } 
        } 
      });  
    } 

ответ

0

кажется #test_input в вашей форме, так что вы должны ждать, пока другая форма не будет полностью загружен, используйте функцию обратного вызова, как это:

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

OH ДА! Работает! Большое спасибо Мехран! – user3199840

Смежные вопросы