2013-12-21 89 views
1

我想一個非常簡單的事情我的網頁上出現,用戶提交表單之後,必須有一個延遲的形式實際提交之前,但它似乎沒有工作的HTML表單:javascript函數被忽略

<form action='index.php' method='get'> 
<input type='submit' value='Reset' name='resetBtn' onClick='PreSubmit(this.form)'> 

</form> 

javascript函數:

function PreSubmit(form) { 
    var func = function() { 
     form.submit(); 
    } 
    setTimeout(func, 10000);  
} 

,所以我真的很新的JavaScript,但我怎麼看它,點擊數事件必須調用這個javascript函數,它應該等待10秒鐘,然後才提交表單並更新頁面,但表單是立即提交的,爲什麼?在提交之前如何讓它等待?任何形式的幫助,將不勝感激

回答

2

你需要停止提交按鈕的默認行爲。鄉親地塊我們做返回false做到這一點的錯誤,但是這並不完全正確和it's important to understand what returning false is doing。這是不是最好的方式(不顯眼的JS是一個完全不同的主題),但要完成你想要的最小的變化做類似下面

HTML:

<form action='index.php' method='get'> 
<input type='submit' value='Reset' name='resetBtn' onClick='PreSubmit(event, this.form)'> 

</form> 

JS:

function PreSubmit(event, form) { 
    if (event.preventDefault) { 
     event.preventDefault(); 
    } 
    else { 
     event.returnValue = false; 
    } 
    var func = function() { 
     form.submit(); 
    } 
    setTimeout(func, 10000);  
} 
+0

哇哦,很不錯的讀取,肯定會看看那個,謝謝你,非常翔實 – user2209644

+1

@ user2209644記鏈接中的代碼使用jQuery,但jQuery只是一個JavaScript庫,因此只是javascript。在我的答案的代碼是什麼樣的jQuery的preventDefault功能能實現 – joelmdev

+0

我看到了一個不太可靠的版本,您將完全跳過推薦javascript和直接與jQuery開始? – user2209644

0

你需要使它成爲一個類型=「按鈕」,不是一個類型=「提交」

2

添加回的onclick。

onClick='return PreSubmit(this.form)'> 

並添加返回false到PreSubmit。

function PreSubmit(form){ 
    .... 
    //this will stop the click event 
    return false; 
} 

所以PreSubmit返回false - > onClick返回false,這將停止提交按鈕操作。

http://jsfiddle.net/KVsQ4/

我覺得還有另外一個問題,你會考慮,如果用戶持續點擊該按鈕會發生什麼。再等10秒(這意味着你應該clearTimeout以前TIMEID),或者只是禁用它,當用戶單擊它第一次。

+0

該作品謝謝你!你能告訴我爲什麼常規的函數調用不起作用,必須使用返回函數嗎?如果它不是太麻煩。和有關用戶點擊了無數次,我使用的延遲,以顯示動畫,基本上這個按鈕無論如何都會消失=) – user2209644