首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >暂时禁用提交按钮

暂时禁用提交按钮
EN

Stack Overflow用户
提问于 2011-06-01 20:58:04
回答 7查看 2K关注 0票数 4

我有一个表单上传一个大文件到服务器。如下所示:

代码语言:javascript
运行
复制
<form id="myform" action="myaction.php">
  <p>
    <!--fields -->
  </p>
  <input type="submit" class="submit" value="Send" />
</form>

我需要防止用户重新提交表单,而之前的处理还没有准备好。如何在处理前禁用提交按钮,并在提交操作后启用该按钮?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-06-01 21:06:09

在jQuery中,从1.6版开始,正确的方法是使用新的prop()方法。

同样重要的是,将事件附加到表单的提交事件,而不是附加到提交按钮本身。这样,如果有人在填写表单时按回车键,我相信我们都会这样做,该按钮仍将被禁用。

正确的代码:

代码语言:javascript
运行
复制
$("#myform").submit(function() {
    $("#myform .submit").prop('disabled', true);
}

如果您真的想阻止对正在多次提交的表单的访问,您应该停止表单的提交,而不仅仅是禁用该按钮:

代码语言:javascript
运行
复制
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);
});

所有其他解决方案都是错误的!:)

开个玩笑,它们也会工作,但这将捕获更多的异常逻辑,并正确处理属性。

票数 2
EN

Stack Overflow用户

发布于 2011-06-01 21:01:12

试一试

代码语言:javascript
运行
复制
$("input.submit").attr('disabled', 'disabled');

然后

代码语言:javascript
运行
复制
$("input.submit").removeAttr('disabled');
票数 2
EN

Stack Overflow用户

发布于 2011-06-01 20:59:33

您可以在单击元素后将属性disabled="true"添加到该元素。

代码语言:javascript
运行
复制
$('.submit').click(function(){$(this).attr('disabled',true)});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6201505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档