防止双击提交而不禁用该按钮

时间:2017-03-24 12:32:35

标签: jquery

我有一个使用提交按钮查询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);
        });
      }

是否有一种简单的方法可以阻止此处的点击,或者我应该重写一次?

3 个答案:

答案 0 :(得分:0)

您可以使用以下方法阻止双重权限:

$(".guidebox-search-form").one("submit", Your function);

感谢这个(.one)提交应该只工作一次。 希望有所帮助!

答案 1 :(得分:0)

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

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()将阻止第二次对同一元素执行事件

答案 2 :(得分:0)

支持@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);

希望这有助于您的情况。