0

我的网站上有一个使用 Jquery 处理的注册提交按钮。问题是我想防止人们在注册帐户的过程中多次点击它。出于这个原因,一旦他们点击了点击事件,我就会禁用它,除非出现错误,否则不要重新启用点击。见 bwlow

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" />
4

1 回答 1

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");
}
于 2013-08-23T07:30:41.170 回答