unbind jQuery不起作用

时间:2018-01-24 16:36:14

标签: jquery

尝试取消绑定一个div,所以在单击它之后它将无法工作,直到我再次绑定它,但它没有解除绑定,我做错了什么?

$('#envio').click(function() {
  $('#mensagemenvio').html('<span style="color: blue; font-size: 10px">Enviando</span>');
  $(this).unbind('click');

  $('#saque').submit(function (){
    $.ajax({
      type: 'POST',
      url: 'enviar.php',
      data: $('#sacar_btc').serialize(),
      success: function (e){
        $('#mensagemenvio').html(e);
      }
    }); 
    return false;
  });
});
<div style="width: calc(70% - 60px); height: 25px; line-height: 25px;" class="envia" id="envio">
  <input id="envia" class="submit" type="submit" value="Confirmar" name="command"/>
</div>

我已尝试使用off()代替unbind(),并尝试更改我的jQuery版本。

我想要的是在php脚本运行时禁用提交按钮,它是一个慢速脚本,大约需要5秒才能完成,因此用户无法提交两次。

2 个答案:

答案 0 :(得分:1)

在单击处理程序中,绑定一个函数以在表单提交上运行。

取消绑定表单提交处理程序。

我怀疑你真正想要做的是创建一个运行Ajax的点击处理程序,而不是将处理程序绑定到表单提交。然后你可以取消绑定点击处理程序,它会按你的意图行事。

答案 1 :(得分:0)

您只需添加一个标记即可表明正在提交的内容如下:

window.isSubmitting = false;

$('#envio').click(function() {
  if (window.isSubmitting) {
     return false;
  } else {
     window.isSubmitting = true;
  }

  $('#mensagemenvio').html('<span style="color: blue; font-size: 10px">Enviando</span>');


  $('#saque').submit(function (){
    $.ajax({
      type: 'POST',
      url: 'enviar.php',
      data: $('#sacar_btc').serialize(),
      success: function (e){
        window.isSubmitting = false;
        $('#mensagemenvio').html(e);
      },
      error: function() { // important the error handler to enable the event
        window.isSubmitting = false;
      }      
    }); 
    return false;
  });
});