Всплывающая форма листовки: Включите в список всплывающие формы значения Листовки. - PullRequest
0 голосов
/ 31 августа 2018

У меня есть всплывающая форма с использованием Leaflet, и я хотел бы включить значения eventLatLong как часть передаваемых параметров. Поэтому я рисую поли или опускаю маркер, и должно появиться всплывающее окно с формой, в которой пользователь вводит имя. Это имя должно быть сохранено с координатами события розыгрыша.

Это код, который я до сих пор и часами пытался выяснить. Я очень новичок в таких областях, как JQuery, Ajax и JS в целом, поэтому любая помощь приветствуется.

<script>
map.on(L.Draw.Event.CREATED, function (e) {
    eventLatLong = e.layer._latlng;
    var polyEvent = drawnItems.addLayer(e.layer);
    var popupForm = '<form class="simple_form business_form" id="form" novalidate="novalidate" enctype="multipart/form-data" action="/create_section" accept-charset="UTF-8" data-remote="true" method="post" _lpchecked="1"><input name="utf8" type="hidden" value="✓">\n' +
        '    <h2>\n' +
        '<input id="coords" type="hidden" value="">\n' +
        '        <div class="input string required thing_part_name"><label class="string required control-label" for="thing_part_name" id="name"><abbr title="required">*</abbr> Name</label><input class="string required" autofocus="autofocus" type="text" name="thing_part[name]" id="thing_part_name"></div>\n' +
        '        <div class="form-actions">\n' +
        '            <input type="submit" name="commit" value="Add New Poly">\n' +
        '        </div>\n' +
        '        <br>\n' +
        '    </h2>\n' +
        '</form>';
    polyEvent.bindPopup(popupForm, {
        keepInView: true,
        closeButton: true
    }).openPopup();

    $("#form").submit(function (e) {
        e.preventDefault();
    });
});
</script>

1 Ответ

0 голосов
/ 01 сентября 2018

Я понял это.

Все, что мне нужно было сделать, это передать значение theData через функцию jquery val.

<script>
map.on(L.Draw.Event.CREATED, function (e) {

    var polyEvent = drawnItems.addLayer(e.layer);

    theBounds = JSON.stringify(e.layer.toGeoJSON())

    var popupForm = '<%= j render "path/to/form" %>';

    polyEvent.bindPopup(popupForm, {
        keepInView: true,
        closeButton: true
    }).openPopup();

    $('#bounds').val(theBounds);

    $("#form").submit(function (e) {
        e.preventDefault();
    });
});
</script>
...