我有一个表单上传一个大文件到服务器。如下所示:
<form id="myform" action="myaction.php">
<p>
<!--fields -->
</p>
<input type="submit" class="submit" value="Send" />
</form>
我需要防止用户重新提交表单,而之前的处理还没有准备好。如何在处理前禁用提交按钮,并在提交操作后启用该按钮?
发布于 2011-06-01 21:06:09
在jQuery中,从1.6版开始,正确的方法是使用新的prop()方法。
同样重要的是,将事件附加到表单的提交事件,而不是附加到提交按钮本身。这样,如果有人在填写表单时按回车键,我相信我们都会这样做,该按钮仍将被禁用。
正确的代码:
$("#myform").submit(function() {
$("#myform .submit").prop('disabled', true);
}
如果您真的想阻止对正在多次提交的表单的访问,您应该停止表单的提交,而不仅仅是禁用该按钮:
var myform = $("#myform");
myform.submit(function() {
if($.data(myform.get(0), 'submitting') {
return false;
}
$.data(myform.get(0), 'submitting', true);
$(".submit", myform).prop('disabled', true);
});
所有其他解决方案都是错误的!:)
开个玩笑,它们也会工作,但这将捕获更多的异常逻辑,并正确处理属性。
发布于 2011-06-01 21:01:12
试一试
$("input.submit").attr('disabled', 'disabled');
然后
$("input.submit").removeAttr('disabled');
发布于 2011-06-01 20:59:33
您可以在单击元素后将属性disabled="true"
添加到该元素。
$('.submit').click(function(){$(this).attr('disabled',true)});
https://stackoverflow.com/questions/6201505
复制相似问题