flask-js form.validate_on_submit () Подтвердить () интеграция - PullRequest
0 голосов
/ 11 октября 2019

У меня есть форма для записи изменений после просмотра некоторых значений. В routes.py я подтверждаю, что форма проверена через .validate_on_submit():

    ### ... rest of routes.py ....
    form = VariantOverallRevision()
    if form.validate_on_submit() :
        ### ... code to write new class on file ...
        flash("sent!")
    ### ... rest of routes.py ....

Я хочу вставить кнопку подтверждения да / нет через js в этом представлении, но я не знаю, как интегрировать«остановка отправки» после нажатия.

Мне удалось интегрировать confirm() в элемент кнопки, но, очевидно, форма отправляется сразу после нажатия кнопки (а не после того, как js confirm()звонил):

function confirm_ACMG_review()
{
    confirm("Save data?");
}
if (confirm_ACMG_review) {
    //proceed to sumbmission
}
else {
    //block submission
}
document.getElementById('manual_ACMG_annotation_confirm_review').onclick = confirm_ACMG_review;

Здесь раздел HTML:

        <form id="manual_ACMG_annotation_confirm_form" action="" method="post" novalidate>
            {{ form.hidden_tag() }}
            {{ form.submit( id = "manual_ACMG_annotation_confirm_review", style = "font-size: 120%; font-weight: bold;" ) }}
        </form>

Я знаю, что могу открыть другую страницу / перенаправить на другой URL и т. д., но я хотел знать, еслиесть какой-либо способ интегрировать подачу в колбу с помощью js.

Заранее большое спасибо за любую помощь!

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете использовать preventDefault() метод для события щелчка, чтобы форма не была отправлена ​​по умолчанию.

document.getElementById("manual_ACMG_annotation_confirm_review").addEventListener("click", function(event){
  event.preventDefault() // prevent default form submission
  // here you can implement confirmation
  // set confirm_ACMG_review value based on confirmation result
  if (confirm_ACMG_review) {
      document.getElementById('manual_ACMG_annotation_confirm_form').submit();  // submit form manually
  }
});
...