Estou tentando criar uma caixa de diálogo modal rolável com um formulário no modal-body . É um formulário longo, verticalmente, então eu gostaria de utilizar a seção modal-footer para abrigar o botão de envio, uma vez que ele permanece parado ao rolar o formulário/corpo.
Estou usando uma estrutura modal simples como esta:
<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-body">
... FORM CONTENT ...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Understood</button>
</div>
</div>
</div>
</div>
O problema surge quando tento inserir as tags <form>
e </form>
. Se eu colocar <form>
antes de modal-body e </form>
depois de modal-footer , isso quebrará a natureza estática do rodapé, bem como a natureza rolável do corpo.
<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-scrollable">
<div class="modal-content">
<form action=".....">
<div class="modal-body">
... FORM CONTENT ...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Understood</button>
</div>
</form>
</div>
</div>
</div>
Entendo que poderia manter o próprio formulário contido em modal-body e usar um botão padrão fora do formulário para enviar o formulário via javascript, mas preferiria manter o botão dentro do formulário para que o formulário seja enviado quando enter
for pressionado .
Também tentei mover as tags do formulário ao redor da .modal
div, ao redor da .modal-dialog
div e ao redor da .modal-content
div e cada vez quebra o modal de uma maneira diferente.
Eu reconstruí esse problema aqui: https://codepen.io/JayblesG/pen/MWRjvOx
Alguém teve sucesso em realizar algo assim?
Parece funcionar bem se você usar conteúdo modal como
<form>
...https://codeply.com/p/qFI1p5Dh27
Dessa forma, você pode usar o botão de envio do formulário HTML.