Отключить обновление страницы, после отправки формы

94
22 мая 2021, 12:40

При отправке формы, на странице должен отрисовываться canvas. Но после того как форма отправлена, canvas отрисовывается на долю секунды и потом исчезает. Как сделать так, чтобы после отправки, canvas оставался на месте.

html code:

<form id="mainForm">
    <span id="header">Enter math expression:</span>
    <input type="text" id="inputExpr">
    <input type="submit" id="submitBtn" onclick="drawShelves()">
</form>
<canvas id="canvas"></canvas>
<script src="scr.js"></script>

js:

function drawShelves() {
    var canvas = document.getElementById('canvas'),
        ctx = canvas.getContext('2d');
    canvas.width  = 800;
    canvas.height = 400;
    ctx.lineWidth = 1.0;
    ctx.strokeStyle = 'black';
    ctx.beginPath();
    // left shelve
    ctx.strokeRect(5, 100, 340, 10);
    ctx.moveTo(5, 110);
    for (var i = 5; i < 340; i+=10) {
        ctx.lineTo(i+10, 100);
        ctx.moveTo(i+10, 110);
    }
    // right shelve
    ctx.strokeRect(455, 100, 340, 10);
    ctx.moveTo(455, 110);
    for (var i = 455; i < 790; i+=10) {
        ctx.lineTo(i+10, 100);
        ctx.moveTo(i+10, 110);
    }
    ctx.stroke();
}
Answer 1

Есть два варианта.

  1. Отключить событие нажатия на кнопку по умолчанию:

    <input type="submit" id="submitBtn" onclick="drawShelves(); return false;">
    
  2. Отключить событие отправки формы по умолчанию:

    <form id="mainForm" onsubmit="return false;">
    

Но в обоих случаях вам нужно каким-либо образом без перезагрузки страницы отправить данные на сервер. Самый верный способ -- использовать Ajax запрос. Поэтому код будет проще переписать следующим образом:

<form id="mainForm" onsubmit="return drawShelves();">
function drawShelves() {
    // здесь отрисовка канвы
    // здесь ajax запрос
    return false;
}

Подробнее про Ajax можно прочитать здесь: http://javascript.ru/ajax/intro.

Answer 2
...function(event) {
  // Откоючает тригер события формы
  event.preventDefault();
  ... some code...
}
READ ALSO
Вывод простых чисел JavaScript

Вывод простых чисел JavaScript

Условие: Напишите код, который выводит все простые числа из интервала от 2 до nДля n = 10 результат должен быть 2,3,5,7

106
Javascript съедает всю оперативку

Javascript съедает всю оперативку

Доброго времени суток!

106
Как запустить приложение, написанное на Qt C++, на другом ПК, где Qt нету?

Как запустить приложение, написанное на Qt C++, на другом ПК, где Qt нету?

У меня на моем ПК, все запускается без ошибокВ папку с

118