【发布时间】:2020-02-05 21:38:01
【问题描述】:
在为我的烧瓶项目构建 HTML 代码时,即使提交时出现错误,我的模式也会在提交时关闭。如果有错误,我找不到保持模式显示的方法。
我尝试添加一些 JavaScript,但我不断收到错误,然后提交按钮根本不起作用。另外由于某种原因,$.path jQuery 命令不起作用(我认为这可能是因为我在本地服务器上?)
非常感谢任何帮助。
<button type="button" class="btn btn-outline-info btn-sm" data-toggle="modal" data-target="#myModal"><i class="fas fa-plus icon"></i>Add Training</button>
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog form-width">
<div class="modal-content">
<div class="modal-header">
<span>Add Training</span>
</div>
<div class="modal-body">
<form method="POST" enctype="multipart/form-data">
{{ form.hidden_tag() }}
<fieldset class="form-group">
<legend>Add training to your record</legend>
<br>
<div class="form-group form-grid">
{{ form.training_course.label() }}
{% if form.training_course.errors %}
{{ form.training_course(class="form-control form-control-sm is-invalid") }}
<div class="invalid-feedback">
{% for error in form.training_course.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.training_course(class="form-control form-control-sm") }}
{% endif %}
</div>
<div class="form-group form-grid">
{{ form.training_provider.label() }}
{% if form.training_provider.errors %}
{{ form.training_provider(class="form-control form-control-sm is-invalid") }}
<div class="invalid-feedback">
{% for error in form.training_provider.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.training_provider(class="form-control form-control-sm") }}
{% endif %}
</div>
<div class="form-group form-grid">
{{ form.date.label() }}
{% if form.date.errors %}
{{ form.date(class="form-control form-control-sm is-invalid") }}
<div class="invalid-feedback">
{% for error in form.date.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.date(class="form-control form-control-sm") }}
{% endif %}
</div>
<div class="form-group form-grid">
{{ form.cpd.label() }}
{% if form.cpd.errors %}
{{ form.cpd(class="form-control form-control-sm is-invalid", placeholder="CPD Hours") }}
<div class="invalid-feedback">
{% for error in form.cpd.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.cpd(class="form-control form-control-sm", placeholder="CPD Hours") }}
{% endif %}
</div>
<div class="form-group form-grid">
{{ form.certificate.label() }}
{% if form.certificate.errors %}
{{ form.certificate(class="form-control form-control-sm is-invalid", style="padding-bottom:30px;") }}
<div class="invalid-feedback">
{% for error in form.certificate.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.certificate(class="form-control form-control-sm", style="padding-bottom:30px;") }}
{% endif %}
</div>
</fieldset>
<div class="form-group" >
{{ form.submit(class="btn btn-outline-info") }}
<button type="button" class="btn btn-outline-danger" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
</div>
我尝试使用但由于错误而无法工作的 JavaScript(未捕获的 TypeError:$.post 不是函数 - 尽管我有 jQuery)是:
$('#submit').click(function(event) {
event.preventDefault();
var url = "{{ url_for('training.completed_training') }}";
$.post(url, data=$('#modForm').serialize(), function(data) {
if (data.status == 'ok') {
$('#myModal').modal('hide');
location.reload();
}
else {
$('#myModal .modal-content').html(data);
}
})
});
【问题讨论】:
-
嗨,Saif,欢迎来到 Stack Overflow!您的错误发生在服务器还是浏览器中?你能提供错误的堆栈跟踪吗?
-
嗨 Jon,它的 jQuery 错误如下:scripts.js:18 Uncaught TypeError: $.post is not a function at HTMLInputElement.
(scripts.js:18) at HTMLInputElement.dispatch (jquery.min.js:2) 在 HTMLInputElement.v.handle (jquery.min.js:2)。主要问题是模式在提交时会消失,即使它有错误 -
嗨 Saif(欢迎您!),关于 jQuery 错误,$(document).ready() 函数内的点击绑定是否正确? (我自己有时会忘记这一点)关于模式关闭,检查从服务器接收到的内容,您正在发送预期数据的路由吗?
-
是的,我有,但还是不行!
-
验证错误(例如,在表单中提交的文件扩展名错误)显示在模态中,但模态在提交时关闭,因此您必须重新打开模态才能查看验证错误。如果出现验证错误,我希望它保持正常
标签: flask bootstrap-4 bootstrap-modal flask-wtforms