2014-09-10 86 views
0

我有一個提交按鈕的表單,並通過onclick = ...附加了一個驗證器。當我點擊submit按鈕時,驗證器被執行並且返回false。但是,表單已提交。怎麼會這樣?我的Onclick處理函數返回false,但我的表單仍然提交

要進一步縮小的問題,我甚至暫時改變代碼:

<form id="contactform" method="post" action="cgi-bin/process_contact_form.rb"> 
    .... 
    <input type="submit" value="Abschicken" onclick="false && k_validate('de')" /> 
</form> 

這只是返回false並繞過我的驗證。事實上,即使在這個版本中,表單也會被提交。

請注意,我知道有手段獲取提交繞過驗證程序的表單。我在這裏只對「正常」情況感興趣,即當用戶明確地點擊按鈕時。

我已經測試了這個在Mac OSX 10.6.8,使用以下瀏覽器:

設備SeaMonkey 2.0.14 Safari瀏覽器5.1.10 鉻36.0

,當然是,啓用JavaScript。

上述「假」快捷方式的測試頁可以在這裏看到:

http://www.tsukaeru-doitsugo.de/testing.html

它有兩個按鈕。第一個按鈕(標記爲「Abschicken」)是表單中的一個。它的onclick處理函數返回false,但表單仍然被提交。

+0

這將與OR(或假|| X總是返回X)真。使用AND時,如果LHS已經是假的,則不評估RHS(因爲假&&X總是假的,與X的值無關)。 – user1934428 2014-09-10 10:28:41

+0

其實,我也可以寫onclick =「false」。以這種方式進行編輯更容易,因爲最終,我計劃刪除'false &&'並讓我的驗證器運行。 – user1934428 2014-09-10 10:30:11

回答

4

你缺少返回語句:

<input type="submit" value="Abschicken" onclick="return k_validate('de')" /> 
+1

...這意味着onclick函數返回'undefined',這不會阻止默認操作。 – Quentin 2014-09-10 10:19:58

+0

我確實需要在「onclick」中返回????????? 'return'僅用於一個函數內部,我想。順便說一句,我跟着這裏的例子,其中也不使用返回:http://www.tizag.com/javascriptT/javascriptform.php – user1934428 2014-09-10 10:33:54

+0

剛剛測試過它。隨着「回報」,它的作品!非常感謝....我剛剛學會不信任教程盲目;-) – user1934428 2014-09-10 10:37:19

相關問題