禁用然后重新启用click function jQuery

时间:2013-02-11 08:28:27

标签: javascript jquery firefox

我有一个文件上传系统,点击上传按钮后,文件会通过AJAX上传。在上传文件时,我想禁用“选择图像”按钮上的单击功能。 目前,这是文件选择按钮上的单击功能:

$(document).ready(function() {
    $("#file-button").click(function() {
        $('#file').trigger('click');
    });
});

工作正常,但我想在XmlHttpRequest的进程阶段禁用click函数,然后在从服务器获得200响应时重新启用click函数。我已经尝试了bind()unbind(),但它在Chrome中工作正常,但在Firefox中,在上传过程中,按钮无法点击,这就是我想要的,然后在我收到回复之后服务器按钮重新启用,但在firefox中两个文件选择对话窗口同时打开。这是因为上面的函数,我使用bind()再次绑定函数。有没有人对如何启用有任何建议,然后在不重新输入点击事件的代码(功能)的情况下禁用该按钮。

这样的事情会更好:

$('#file-button').disable();
$('#file-button').enable();

我尝试了on()off(),但它们似乎也无效。

4 个答案:

答案 0 :(得分:8)

解决方案 - 感谢Eric

我将初始点击功能更改为以下内容:

$(document).ready(function() {
    $("#file-button").click(function() {
      if ( $('#file-button').attr('disabled') == "disabled" ) {
        return false;
      }
      else {
          $('#file').trigger('click');
      }
    });
});

我设置以下内容以禁用按钮

$('#file-button').attr('disabled','disabled');

这是为了重新启用它:

$('#file-button').removeAttr('disabled');

答案 1 :(得分:4)

使用jQuery $.prop()函数禁用该按钮:

$("input[type=submit]").prop('disabled', true);

向点击处理程序添加条件以检查按钮是否已禁用:

$("#file-button").click(function() {
  if (!$(this).is(':disabled')) {
    $('#file').trigger('click');
  }
});

稍后重新启用按钮:

$("input[type=submit]").prop('disabled', false);

或者,如果涉及表单,您可以使用提交事件而不是点击:

$("#whatever-your-form-is").on('submit', function() {
  $('#file').trigger('click');
});

答案 2 :(得分:1)

尝试Attr jQuery函数。

$('#file-button').attr('disabled','disabled');
$('#file-button').removeAttr('disabled');

经过测试的代码

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    $(document).ready(function()
    {
        $("#file-button").click(function(e)
        {
            e.preventDefault();
            $(this).attr('disabled','disabled');
            return false;
        });
    });

</script>

<input type="button" id="file-button" value="ClickMe" />

答案 3 :(得分:0)

您必须参考输入按钮才能禁用按钮,

如下所示

  $("input[type=submit]").prob('disabled', true);
  $("inpur[type=submit]").prob('disabled', false);