簡體   English   中英

Django表單提交按鈕的onclick不會調用JavaScript函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM