Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обновление отдельного блока без перезагрузки страницы (https://javascript.ru/forum/misc/72412-obnovlenie-otdelnogo-bloka-bez-perezagruzki-stranicy.html)

BellaChao 26.01.2018 23:23

Обновление отдельного блока без перезагрузки страницы
 
Добрый день, уважаемые форумчане! :help:

Что есть сейчас?

На странице есть блок карты (для создания и работы с ним использую leaflet.js + Leaflet Routing Machine для построения маршрутов)
Блок карты:
<div id="map" style="width: 100%; height: 500px"></div>
Маршрут отрисовывается при помощи Leaflet Routing Machine так:
L.Routing.control({waypoints: markers}).addTo(map);
, где markers - массив, содержащий координаты маркеров для построения маршрута

Чего я хочу?

В идеале все должно работать так:
1. В поле формы вводятся координаты маркера
2. По кнопке submit формы координаты записываются в массив markers
3. По маркерам отрисовывается маршрут

Что я сделал для того, чтобы достичь своего идеала?)
1. Сотворил это:
<script>

        //Объявляем массив markers для хранения точек маршрута
        var markers = [];

        //Отрисовка маршрута по точкам
        L.Routing.control({
            waypoints: markers
        }).addTo(map);

        //Функция для добавления нового элемента в массив markers
        function LRMAdd(coord){
            markers.push(L.latLng(coord));
            $('#map').html();
            }
        
        function getValue(coord){
            return document.getElementById(coord).value;
            }

</script>
2. Форма для добавления точки маршрута:
<form id="form">
<input type="text" id="input_coord">
<input type="submit" onsubmit="LRMAdd(getValue("input_coord"))" value="Добавить"></form>
И ничего! Подозреваю, что проблема в том, что при нажатии кнопки "Добавить" обновляется страница целиком, и markers обнуляется каждый раз. Предполагаю, что проблему можно решить, сделав возможность обновления отдельного блока с картой без перезагрузки всей страницы. Однако я не понимаю, как это сделать. Помогите, пожалуйста!

Dilettante_Pro 27.01.2018 10:46

BellaChao,
Попробуйте:
form переделать в div
type вместо submit - button
Вместо onsubmit - onclick

ksa 29.01.2018 09:46

BellaChao, вот почитай статейку
https://monsterlessons.com/project/l...y-v-javascript

Там немного про другое... Но принцип нужно использовать тот же. ;)

Dilettante_Pro 29.01.2018 11:04

ksa,
Форма - это для отправки данных на сервер. Здесь отправка не нужна. Так зачем сначала делать форму, а потом бороться с ее функциональностью?

ksa 29.01.2018 14:40

Цитата:

Сообщение от Dilettante_Pro
Форма - это для отправки данных на сервер. Здесь отправка не нужна.

Так отправка не обязательна.
Цитата:

Сообщение от Dilettante_Pro
Так зачем сначала делать форму, а потом бороться с ее функциональностью?

Никакой "борьбы" нет, сплошное использование возможностей. :)

Но каждый волен выбирать свой путь...


Часовой пояс GMT +3, время: 15:57.