2013-08-23 80 views
0

我的網站上有一個使用Jquery處理的註冊提交按鈕。問題是我想阻止人們在註冊帳戶的過程中多次點擊它。出於這個原因,我一旦點擊它就禁用點擊事件,除非有錯誤,否則不要重新啓用點擊。見bwlow即使將操作設置爲.off,禁用默認操作(返回false)

function registerClick() { 
    $('#register_submit').off('click',registerClick); 
    $.ajax({ 
     type: "POST", 
     url: "/ajax/register.ajax.php", 
     data: $("#register_form").serialize(), 
     success: function(data) { 
      var result = jQuery.parseJSON(data); 
      if (result.success) { 
       alert('Account registered. You are now being transferred to Paypal for payment.'); 
       window.location = result.success; 
      } else if (result.error) { 
       alert(result.error); 
       $('#register_submit').on('click',registerClick); 
      } else { 
       alert('Unhandled exception'); 
       $('#register_submit').on('click',registerClick); 
      } 
     } 
    }); 
    return false; 
}; 

// signup 
$('#register_submit').on('click',registerClick); 

什麼遺憾的是現在發生的是,如果他們雙擊該按鈕,第二次點擊觸發默認按鈕的動作也就是提交表格#。

我在想也許我需要一起禁用按鈕,但我是Jquery的新手,所以這對我來說是未知的領域。

編輯:

我還要提到的是,這是按鈕HTML(所以不是一個正常的提交按鈕)。

<input type="image" class="input_submit" id="register_submit" src="images/get_your_email.png" /> 

回答

1

我會添加類按鈕,當它被點擊一次,刪除類,當進程完成加上一個檢查,以確保該按鈕沒有禁用類。

$('#register_submit').on('click', function() { 
    if($(this).hasClass("disable")) { 
     return false; 
    } 
    else { 
     $(this).addClass("disable"); 
     registerClick(); 
    } 
}); 
function registerClick() { 
    $.ajax({ 
     type: "POST", 
     url: "/ajax/register.ajax.php", 
     data: $("#register_form").serialize(), 
     success: function(data) { 
      var result = jQuery.parseJSON(data); 
      if (result.success) { 
       alert('Account registered. You are now being transferred to Paypal for payment.'); 
       window.location = result.success; 
      } else if (result.error) { 
       alert(result.error); 
       $('#register_submit').on('click',registerClick); 
      } else { 
       alert('Unhandled exception'); 
       $('#register_submit').on('click',registerClick); 
      } 
      remove_addedClass(); 
     } 
    }); 
    return false; 
}; 
function remove_addedClass() { 
    $("#register_submit").removeClass("disable"); 
} 
相關問題