Как предотвратить двойную подачу в форме магнолии - PullRequest
0 голосов
/ 16 апреля 2020

Я пытался добавить обработчик для кнопки Отправить

<input type="submit" value="Submit/ Soumettre" onclick='submitform(); this.disabled = true;'>

function submitform()
{
    let myForm = document.getElementById('MyForm');
    myForm.submit();
}

, но это убивает все валидаторы поля ввода (в моем случае валидатор поля электронной почты).

У Магнолии должно быть что-то для такого общий вариант использования.

Пояснение: класс модели, прикрепленный к «Страница после отправки», выполняет трудоемкий запрос на обслуживание. Таким образом, пользователь не видит новую страницу и может несколько раз нажать кнопку «Отправить».

1 Ответ

0 голосов
/ 16 апреля 2020

Вместо того, чтобы прикреплять обработчик к кнопке отправки, я помещаю обработчик в form.onsubmit

<div id='shadow' style="display: none; position: absolute; width:100%;height:100%;opacity:0.3;z-index:100;background:#000"></div>
<form id="MyForm" method="post" action="" enctype="multipart/form-data" onsubmit="blockScreen()"> ... </form>

function blockScreen(){
    let elem = document.getElementById('shadow');
    elem.style.display = 'block';
    elem.addEventListener('click', function(){}, false);
}

Эта тень блокирует экран и активируется только после завершения всех валидаторов

...