jQuery之前只允许单击一次.ajax()

Tom*_*Tom 3 javascript ajax jquery bind unbind

我试图只允许按一次按钮,然后通过ajax提交一些数据.我面临的问题是用户可以点击50x并且数据每次都提交POST?

jQuery("#id").unbind('click');

jQuery.ajax({
    type: "POST",
    url: ajax_url,
    data: ajax_data,
    cache: false,
    success: function (html) {
        location.reload(true);
    }
});
Run Code Online (Sandbox Code Playgroud)

如果用户点击#ID 100x,我该如何确保数据只提交一次?然后重新启用#ID?

Mac*_*Mac 9

你可以.one()在jQuery中使用该函数.

jQuery("#id").one('click', function()
{
    jQuery.ajax({
        type: "POST",
        url: ajax_url,
        data: ajax_data,
        cache: false,
        success: function (html) {
            location.reload(true);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

请记住,这将完全删除click事件,即使您的ajax出错,您仍然无法再次单击它.


Sru*_*uly 5

只需禁用按钮

$("#id").attr("disabled", "disabled")
Run Code Online (Sandbox Code Playgroud)

然后在成功函数中启用它

$("#id").removeAttr("disabled")
Run Code Online (Sandbox Code Playgroud)