2012-08-22 45 views
2

我需要讓我的提交按鈕只點擊一次,以防止雙擊。只允許點擊一次,沒有雙擊

這裏有一個方法,有人貼:

$(document).ready(function() { 
     $("#submit").one('click', function (event) 
     { 
     event.preventDefault(); 
     //do something 
     $(this).prop('disabled', true); 
     }); 
    }); 

1)從我的理解,將。一隻能觸發一次。 如果是這樣,我不確定event.preventDefault()和$(this).prop('disabled',true)的需求是什麼,因爲點擊只完成一次。這將是本身的修復。從測試中,我注意到,如果我雙擊,它只發生一次(嘗試沒有防止默認和禁用)

2)如果.one沒有做我所假設的1),我明白$(這個) .prop('disabled',true);禁用按鈕,但不太明白 爲什麼我們需要event.preventDefault();根據我的理解,這將防止默認操作,在這種情況下是提交。如果這是真的,event.preventDefault();因爲我們確實想提交它,但只有一次。

3)本身不會阻止雙擊。我對此是否正確?所以不需要其他的邏輯,正確?

回答

2

我覺得誰回答,那一定被認爲失敗考驗的解決方案,

event.preventDefault(); - 實施.click的目的是獲得實際提交之前處理表單數據。如果你有<input type="submit"它會在執行處理程序之前提交表單,除非它被阻止。如果您使用<button><input type="button"..,則不需要。

$(this).prop('disabled', true); - 防止鍵盤空間等效於按鈕點擊。

.one將防止雙擊。

+0

@ 11684我認爲他的問題更多的是爲什麼我們有這些時使用'.one' .. –

+0

問題,比如說,如果你點擊一個按鈕,.one將只做一次,我知道了。如果在點擊之後,表單被提交併且您在同一頁面上,會發生什麼情況。這個.one再次按預期工作。不是,就我而言,點擊後我會轉到另一個頁面,但如果您保持在同一頁面上而只想提交內容,會發生什麼? –

+0

@NatePet提交表單時,頁面將刷新..除非你做ajax調用..所以如果表單被提交(這將刷新頁面),'.one'將按預期工作。 –

6

在我看來,他想阻止提交按鈕的默認操作,也就是將表單發佈到服務器。

禁用按鈕本身使其在大多數瀏覽器中顯示爲灰色,因此只是直接指示該按鈕已被點擊。提供動作的視覺反饋使其更適用於最終用戶。

因此:按鈕的點擊只能執行一次,因此只能執行一次,但他不希望提交表單。可能在//do something他想打個阿賈克斯電話。