2013-08-23 45 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"); 
} 
相关问题