我有一个文件上传系统,点击上传按钮后,文件会通过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()
,但它们似乎也无效。
答案 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);