如果 django 表单提交失败,则运行 javascript
Posted
技术标签:
【中文标题】如果 django 表单提交失败,则运行 javascript【英文标题】:running a javascript if a django form submission fails 【发布时间】:2012-12-03 06:15:05 【问题描述】:我有一个django
应用程序,用户可以在其中使用submit a form
。我已将此表单放在div
(say of id='mydiv_id')
中,该表单最初是不可见的(css display:none
)。当用户想要输入输入时,他点击页面上的show
按钮,javascript
通过使display:block
使 div 可见。
表单中的字段具有myform.myfield.errors
,因此如果验证失败,将创建ul class="errorlist"
。
如果表单验证失败,我想通过运行另一个 javascript 来保持表单可见。javascript 的正文将只是 $('#mydiv_id').show();
但是我应该如何运行呢?如果没有在 javascript 内部进行验证,如何告诉 javascript django 表单验证失败?
我认为我需要在 javascript 正文中添加以下内容。除此之外,我不知道如何告诉它表单提交失败。
$(document).ready(function()
..
);
【问题讨论】:
【参考方案1】:如果我理解你的话
$(document).ready(function()
show = % if form.errors % true % else % false % endif %
if (show)
$('#mydiv_id').show();
else
....
);
【讨论】:
【参考方案2】:def method(request):
if something_wrong:
data['error'] = True
return render_to_response('template.html', data)
在 template.html 中你可以添加 javascript 块:
% if error %
<script type='text/javascript'>
//the javascript used to show the message
$(function()
$('#mydiv_id').show();
);
</script>
%endif%
【讨论】:
【参考方案3】:使用javascript进行表单验证是一件很聪明的事情,如果表单无效,为什么还要调用服务器?您只是通过使其进行表单验证来为您的服务器增加额外的开销。如果您不需要调用服务器来进行表单验证,那么您没有理由这样做,请使用 javascript 来执行此操作。
【讨论】:
假设用户关闭 javascript 并提交,那么我将在关闭服务器端验证时遇到问题 在这种情况下,您将不会运行任何 javascript。如果 django 表单验证未通过,您将通过常规帖子提交,您将返回该无效表单以显示错误。以上是关于如果 django 表单提交失败,则运行 javascript的主要内容,如果未能解决你的问题,请参考以下文章