[英]Django form submit button's onclick does not call JavaScript function
我有一個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表單就可以了。
我不認為您的函數正在被調用。 我的直覺是您拼錯了一些內容。 嘗試將alert()放入函數中。
首先,請刪除該“ javascript”偽協議前綴。 它在onclick屬性中絕對沒有位置。 它是為在hrefs中使用而發明的,但已被on *方法取代-整個要點是,您應該只使用javascript本身。
其次,為什么要麻煩變量呢? 為什么不只return validateComment()
呢?
第三,您如何確定該函數“根本沒有被調用”? 該函數似乎正在被調用,只是沒有返回您認為的樣子。 請發布該函數的代碼,也許有人會發現問題所在。
直接在HTML中編寫Javascript事件可能會在以后給您帶來問題-而是嘗試給表單一個ID,並在<head>
部分中捕獲Javascript的Submit事件
例如使用jQuery,並且表單具有id =“ my_form”:
<script type="text/javascript">
$(document).ready(function(){
$('#my_form').submit(function(){
if ([test here]){
return true;
} else {
return false; //prevents submission
}
})
})
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.