2010-09-05 29 views
2

我試圖阻止使用表單上的輸入鍵進行雙重提交,但我似乎無法在數據提交後重新啓用按鍵。下面是我的代碼的一部分:啓用禁用按鍵?

$(".adauga-clasa").submit(function() { 
    var adaugaClasa = $('input[type=text]', this); 

    adaugaClasa.keypress(function(event) { if (event.keyCode == '13') { return false; } }); 

    $.ajax({ 
    type: "POST", 
    url: "/clase/do-add", 
    data: dataString, 
    dataType: "json", 
    success: function(data) { 
     // this doesn't work 
     adaugaClasa.keypress(function(event) { if (event.keyCode == '13') { return true; } });   
    } 
}); 

回答

2

您需要.unbind()以前的事件處理程序(這仍然是約束,仍返回false 之前,新的處理程序),就像這樣:

adaugaClasa.unbind('keypress'); 

有了這個,也不需要添加新的keypress處理程序,只需刪除舊的就足夠了。

0

它不起作用,因爲您不解除先前的功能。你只需添加一個新的。 您需要使用.unbind('keypress')

1

爲什麼你沒有布爾變量標誌?

var form_submitted = False

它設置爲true提交,並提交時請進行確認。

+0

這是迄今爲止最簡單也是最穩健的做法 – 2010-09-05 15:55:13

+0

@Swizec - 雖然...不一樣,原始方法阻止輸入改變,這只是防止'

'提交......給定操作系統是附加到文本框,不提交按鈕,這可能不會做他們所追求的:) – 2010-09-05 16:30:16

+0

好吧,然後綁定按鍵事件將做到這一點:) – 2010-09-05 21:11:16