6

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

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

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

像这样的东西会更好:

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

我已经尝试过on()andoff()并且它们似乎也不起作用。

4

4 回答 4

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');
于 2013-02-22T04:11:11.567 回答
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');
});
于 2013-02-11T08:50:49.807 回答
1

试试AttrjQuery 函数。

$('#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" />
于 2013-02-11T08:33:13.653 回答
0

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

像下面的东西

  $("input[type=submit]").prob('disabled', true);
  $("inpur[type=submit]").prob('disabled', false);
于 2013-02-11T08:35:22.457 回答