jQuery:点击禁用点击事件直到ajax调用响应

Chr*_*ris 9 javascript jquery

在jQuery中执行以下操作:

$('#signupbox1').on('click', '#signup1', function() {

    var str = $('#signupform').serialize();

    // make it look like a waiting button
    $('#signup1').addClass("btn_wait");
    var btn_val = $('#signup1').val();
    $('#signup1').val('');

    $.ajax({
        type: "POST",
        url: "signup_step1.php",
        data: str,
        success: function(msg) {

            //doing stuff here

        $('#signup1').removeClass("btn_wait");
        $('#signup1').val(btn_val);
        }
    });

});
Run Code Online (Sandbox Code Playgroud)

你怎么能禁用点击事件,直到你收到ajax电话的答案?因此,当您点击按钮时,由于添加了类,它不仅"转换"为等待按钮,而且点击事件也将"暂停"......这可能吗?

非常感谢你提前!

Zol*_*oth 13

$('#signupbox1').on('click', '#signup1', function() {

    var str = $('#signupform').serialize();

    // make it look like a waiting button
    var btn_val = $('#signup1').val();
    $('#signup1').addClass("btn_wait").val('').unbind('click');

    $.ajax({
        type: "POST",
        url: "signup_step1.php",
        data: str,
        success: function(msg) {
            $('#signup1').removeClass("btn_wait").val(btn_val);
        },
        complete: function() {
            $('#signup1').bind('click'); // will fire either on success or error
        }
    });

});
Run Code Online (Sandbox Code Playgroud)