[英]jquery/ajax - disable submit button on any form for 3 seconds upon click
我搜索了,沒有發現任何可以解釋我需要的東西。
我有一個網頁腳本,到處都有數十種形式。 無論表單的ID,類或動作如何,單擊任何表單上的提交后,我都需要禁用提交按鈕3秒鍾。
我發現以下代碼:
$('#btn').click(function(){
var btn = $(this);
$.post('http://someurl.com',{delay: 3}).complete(function(){
btn.prop('disabled', false);
});
btn.prop('disabled', true);
});
但這要求表單的ID為btn,並且似乎要求將該表單“發布”到某個頁面。
有什么方法可以在不考慮所執行操作的情況下以所有形式實現此目的? 因此,如果它是注冊表單,則禁用“加入”按鈕3秒鍾,如果它是評論表單,則它同樣會在提交評論后禁用3秒鍾的提交,....基本上,無論我想要什么形式或操作單擊后禁用提交按鈕3秒鍾。
這有可能嗎?
我嘗試將“ #btn”的所有實例更改為“輸入”,但這似乎不起作用。 我真的不是很擅長這些東西,但是似乎可以在別人的幫助下設法絆腳石。
我的問題與其他問題不重復的原因是,我特別聲明“無論表單的ID,類或操作如何”。 在另一個問題上提出的解決方案沒有專門解決此問題。 由於各種原因,在具有成百上千種形式的Web腳本上添加id,類或類似內容的可能性不高(它是一種社交網絡腳本)。 我標記為正確的解決方案是不需要將任何屬性添加到html元素的解決方案。
試試看。(偽代碼,根據需要修改):
$('#mybutton').on('click', function() {
$('[type="submit"]').prop('disabled', true);
setTimeout(function() {
$('[type="submit"]').prop('disabled', false);
}, 3000); // 3 seconds
});
為什么不只綁定一個單獨的事件以延遲添加殘疾人呢? 您仍然可以保留自己的點擊邏輯以進行發布。 只需將以下代碼分配給容器元素,甚至是主體,然后為您想要影響類.mybutton的所有按鈕(或其他對象)賦值。
$('.container').on('click', '.mybutton', function(event) {
setTimeout(function(){
$(this).attr("disabled", false);
}, 3000);
$(this).attr("disabled", true);
});
如果希望殘疾人根據每次呼叫的“完成”事件進行切換,則必須創建一個帶有參數的原型函數,該函數可以分配給每個按鈕。 上面雖然有3秒的延遲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.