javascript - 防止向触发 ajax 调用的按钮发送垃圾邮件

标签 javascript jquery ajax

我有两个按钮,可以添加或减去产品的数量,并使用 ajax 更新数字收据上的价格等。问题是,当用户向按钮发送垃圾邮件时,数量与输入框中的数量不一致。

例如,如果我点击得非常快,输入框的数量值为 10,收据上会显示 8。

我怎样才能防止这种情况发生?

我想只在 ajax 调用完成后让按钮触发该函数。

这是我的代码:

$(".formatenkeuze .plusmin").on("click", function(e, anchorObject, stepNumber, stepDirection, stepPosition) {
  if($('#aantalinput').val() > 0) {
    $('.formateninput').removeClass('alertmessage');
    $('.controlemelding').hide();

    var form_data = $("#formsid form").serialize();
    $.ajax({
      type:'post',
      url:"catalog/calcdiv.php",
      data:({form_data: form_data}),
      success:function(data){
        var obj = JSON.parse(data);
        $( "#ajaxresult" ).empty().append( obj[0].productinfo );
        $('#prijsonder').empty().append($('#prijs').html());
      }
    });

  } else{
    $('.formateninput').addClass('alertmessage');
    $('.controlemelding').css('display','flex');
  }
});

也许将变量设置为 false单击并仅将其设置为 true当 ajax 调用完成时,仅当变量设置为 true 时才触发函数?

最佳答案

假设按钮是 <input type="button"><button>元素,那么您可以在发送 AJAX 请求之前禁用它,并在调用完成时再次启用它。试试这个:

$(".formatenkeuze .plusmin").on("click", function(e) {
  var $button = $(this).prop('disabled', true), // disable here
    $formateninput = $('.formateninput'),
    $controlemelding = $('.controlemelding');

  if ($('#aantalinput').val() > 0) {
    $formateninput.removeClass('alertmessage');
    $controlemelding.hide();

    var form_data = $("#formsid form").serialize();
    $.ajax({
      type: 'post',
      url: "catalog/calcdiv.php",
      data: { form_data: form_data },
      success: function(data) {
        var obj = JSON.parse(data);
        $("#ajaxresult").html(obj[0].productinfo);
        $('#prijsonder').html($('#prijs').html());
      },
      complete: function() {
        $button.prop('disabled', false); // enable here
      }
    });
  } else {
    $formateninput.addClass('alertmessage');
    $controlemelding.css('display', 'flex');
  }
});

关于javascript - 防止向触发 ajax 调用的按钮发送垃圾邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59964771/

相关文章:

javascript - 如何保留用JS onclick函数更改的innerhtml内容

javascript - 在javascript中找到从数组到数组的字符串匹配数?

c# - 在 MVC4 中多次单击按钮打开弹出窗口时出现问题?

javascript - 找到最小的 - Codewars 挑战 - Javascript

javascript - 我怎样才能使 <img> 适合整个浏览器?

javascript - 查看我的 HTML 文件时无法运行我的 Javascript 文件

php - 使用Jquery与数据库进行验证

javascript - 如何使中间项目的 slider 比其他项目大?

javascript - 查找字符串中每个出现的正则表达式

jquery - 跨域 jQuery .AJAX 问题