【发布时间】:2013-07-04 17:04:32
【问题描述】:
我有一个使用modal 获取用户电子邮件的页面,我想将其添加到订阅者列表(这是一个 Django 模型)。这是它的模态代码:
<div id="notifications" class="modal hide fade" role="dialog" ara-labelledby="Notification" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">X</button>
<h4>Subscribe to Status Notifications</h4>
</div>
<form>
<div class="modal-body">
<input type="email" placeholder="email"/>
<p>This service will notify you by email should any issue arise that affects your plivo service.</p>
</div>
<div class="modal-footer">
<input type="submit" value="SUBMIT" class="btn"/>
</div>
</form>
</div>
我尝试查看 Twitter Bootstrap 文档,但它确实很少。我想将POST 数据发送到Django view that's listening forPOST` 请求。
这是最基本的。我使用regex 在存储电子邮件ID 之前比较电子邮件的格式。因此,如果电子邮件does not 与regex 匹配,则视图将返回Invalid Email。所以我想在modal 本身内通知用户。但我真的不知道如何做到这一点。有人请帮忙。
更新 1
根据 karthikr 的回答对此进行了尝试:
<form id="subscribe-email-form" action="/notifications/subscribe/" method="post">
<div class="modal-body">
<input type="email" placeholder="email"/>
<p>This service will notify you by email should any issue arise that affects your service.</p>
</div>
<div class="modal-footer">
<input id="subscribe-email-submit" type="submit" value="SUBMIT" class="btn" />
</div>
</form>
<script>
$(function(){
$('subscribe-email-form').on('submit', function(e){
e.preventDefault();
$.ajax({
url: "/notifications/subscribe/",
type: "POST",
data: $("subscribe-email-form").serialize(),
success: function(data){
alert("Successfully submitted.")
}
});
});
});
</script>
有些事情让我很困惑。 modal button 的 onclick 事件呢?
我明白了!我在<input type="email" placeholder="email"/> 行中添加了name="Email"
Django 字段正在寻找Email Field。所以在我的 Django 视图中,代码是:
request.POST.get("Email", '')
因此,指定字段名称会有所帮助。但它会将我带到我发布的 URL。我希望它在同一页面中显示警报。
更新 2
所以第 1 部分正在运行。正如在帖子中一样。现在我需要显示成功或失败的模态。
这就是我正在尝试的。所以我用textarea创建了这个模态:
<div id="subscription-confirm" class="modal hide fade in" aria-hidden="true">
<div class="modal-header">
<label id="responsestatus"></label>
</div>
</div>
还有 JavaScript:
<script>
$(function(){
$('#subscribe-email-form').on('submit', function(e){
e.preventDefault();
$.ajax({
url: 'notifications/subscribe/',
type: 'POST',
data: $('#subscribe-email-form').serialize(),
success: function(data){
$('#responsestatus').val(data);
$('#subscription-confirm').modal('show');
}
});
});
});
</script>
所以模态出现了,但是数据不是set 进入modal 的label 字段。
【问题讨论】:
-
Bootstrap 4 文档说您可以拥有form within a modal,但它没有显示任何有关在表单中使用模式的信息。我希望它做到了!但我想这就是我们在这里的原因。 :D
标签: javascript jquery python django twitter-bootstrap