Как показать ошибку проверки wtform в модальном окне

У меня есть форма WTF внутри модального окна Twitter Bootstrap 3, которое мне нужно проверить. Проблема в том, что модальное окно закрывается, когда пользователь отправляет форму, даже если есть ошибки проверки. Если я снова нажму кнопку, которая запускает модальное окно, появится ошибка проверки. Итак, мой вопрос: как мне заставить модальное окно оставаться открытым при ошибках проверки? Спасибо!

<button type="button" class="btn btn-default" data-toggle="modal" role="dialog" data-target="#save"> 
<span class="glyphicon glyphicon-flash"></span>
</button>


<div class="modal fade" id="save" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
  <div class="modal-content">
   <div class="modal-header">
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
     <h3 class="modal-title" id="myModalLabel">Archive List and Start New</h3>
    </div>

   <form role="form_list" class="form form-medium" action="." method="post">
   {{ form_save.csrf_token }}
    <div class="modal-body">    
        <h4>Save list as: </h4>
        {{ render_field(form_save.list_name, class="input-large") }}
    </div>

    <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <a href="#">
          <button class="btn btn-success">Archive List</button></a> 
    </div>
  </form>

  </div><!-- modal content -->
  </div><!-- modal-dialog -->
</div><!-- modal -->


<script src="{{ url_for('static', filename='js/jquery.js') }}"></script>
<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>

person Qbite    schedule 17.12.2013    source источник


Ответы (1)


Вы должны добавить некоторый javascript, чтобы автоматически открывать модальное окно, когда в форме есть ошибки.

Что-то вроде (с jQuery):

var formErrors = {% if form_errors %}true{% else %}false{% endif %};

$(document).ready(function() {
    if (formErrors) {
        $('.modal').modal('show');
    }
});
person b4stien    schedule 17.12.2013
comment
Для меня это были form.errors, а не form_errors, возможно, дело в версии. - person Roman; 19.08.2016
comment
Я пробую это решение, но безуспешно. Не могли бы вы понять из моего вопроса, как я могу это сделать? stackoverflow.com/questions/61963633/ Большое спасибо!! - person Guillermo Brachetta; 23.05.2020