【发布时间】:2010-12-14 06:25:34
【问题描述】:
我有一个 Django 表单,需要在提交表单之前进行一些客户端验证。这是模板中的代码:
<form action="/{{ blog_entry.id }}/addComment/" method="post">
{{ commentForm.name.label_tag }}
{{ commentForm.name }}
<span id="spanNameReq" style="color:Red; display:none;">Required</span>
<br />
{{ commentForm.email.label_tag }}
{{ commentForm.email }}
<span id="spanEmailReq" style="color:Red; display:none;">Required</span>
<span id="spanEmailInvalid" style="color:Red; display:none;">Invalid e-mail address</span>
<br />
{{ commentForm.website.label_tag }}
{{ commentForm.website }}
<span id="spanWebsiteInvalid" style="color:Red; display:none;">Invalid URL</span>
<br />
{{ commentForm.comment.label_tag }}
<span id="spanCommentReq" style="color:Red; display:none;">Required</span>
<br />
{{ commentForm.comment }}
<br />
<input type="submit" value="Add comment" onclick="javascript:var ret = validateComment(); return ret;" />
</form>
但问题是 validateComment 根本没有被调用,并且表单被立即提交。 奇怪的是,如果我将 onclick 事件替换为
javascript:alert('test');
或
javascript:return false;
JS 代码执行得很好(在第二种情况下它不会提交表单)。
为什么不执行我指定的功能? 只是为了确认我已经在 HTML 头中包含了脚本文件(包括嵌入在模板中的 JS 代码没有什么区别),如果我不使用 Django 表单,而是使用普通的 HTML 表单,它就可以正常工作。
【问题讨论】:
-
我不能说为什么它不起作用,但您应该考虑使用表单的
onsubmit事件,而不是提交按钮上的onclick。这样一来,如果您按 Enter 键提交表单,它也将起作用,一旦您开始工作。 -
@nlogax:是的,当 joeformd 在下面发布类似的建议时,我也意识到了这一点。不幸的是,这仍然不能解决我的问题......
标签: javascript django forms