Jquery 在不禁用按钮的情况下防止双击提交

Jquery 在不禁用按钮的情况下防止双击提交,jquery,Jquery,我有一个应用程序,它使用提交按钮来查询Ajax调用。现在,如果用户点击太快,它会在按钮消失之前返回重复的结果。用户可以单击搜索图标将其带回来并进行更多搜索,因此我不想在使用后禁用它。这是我提交的代码 function watchSubmit(){ $('.guidebox-search-form').submit(function(event){ $('.guidebox-search-results').empty(); ev

我有一个应用程序,它使用提交按钮来查询Ajax调用。现在,如果用户点击太快,它会在按钮消失之前返回重复的结果。用户可以单击搜索图标将其带回来并进行更多搜索,因此我不想在使用后禁用它。这是我提交的代码

      function watchSubmit(){
        $('.guidebox-search-form').submit(function(event){
          $('.guidebox-search-results').empty();
          event.preventDefault();
          var query = $(this).find('.guidebox-query').val();
          getSearchDataFromApi(query, displaySearchData);
        });
      }

有没有一种简单的方法可以阻止doble单击此处,或者我应该重写它?

您可以通过以下方法防止双重权限:

$(".guidebox-search-form").one("submit", Your function);
感谢这(.1)提交的工作应该只有一次。
希望对你有所帮助

您可以按如下方式更改代码:

function watchSubmit(){
    $('.guidebox-search-form').submit(function(event){
      $('.guidebox-search-results').empty();
      event.preventDefault();
      var query = $(this).find('.guidebox-query').val();
      getSearchDataFromApi(query, displaySearchData);
      $(this).off(event);
    });
}

.off()将阻止同一元素的第二次执行事件

要支持@toomanyredirects注释,单击该按钮后,必须在函数执行时禁用该按钮

$('.sample-button').click(function(event) {
    var oElement = $(this);
    oElement.prop('disabled', true); // disable button temporarily
    $.when(watchSubmit()).then(function(event) {
        oElement.prop('disabled', false); // enable button after method was successful.
    });
});
如果您使用的是较低版本的jQuery,则可能需要使用: $(this.attr('disabled',true); $(this.attr('disabled',false)


希望这对您的情况有所帮助。

您说不想在使用后禁用按钮,但为什么不能在使用后禁用它,并在
getSearchDataFromApi
响应返回后重新启用它?