重新启用已禁用的提交按钮

时间:2015-03-24 09:41:53

标签: jquery

我有一个简单的jquery行,但它没有按预期工作。 我想完成以下任务:

  1. 禁用按钮
  2. 等一下
  3. 启用相同的按钮
  4. 以下是代码行:

        $("#formsubmit").prop('disabled',true).delay(750).prop('disabled',false);
    

    1和2完成,但3从未发生过 查看(非)工作example

    谢谢

2 个答案:

答案 0 :(得分:3)

jQuery的.delay()函数通常用于排队效果,而不是操纵属性:

  

.delay()方法最适合延迟排队的jQuery效果。因为它是有限的 - 例如,它没有提供取消延迟的方法 - .delay()不能替代JavaScript的本机setTimeout函数,这可能更适合某些用例。

如果必须,您可以提供自定义队列,如下所示:

$("#formsubmit").click(function () {
    $('.message').show();

    var button = $(this);
    button.prop("disabled", true).delay(750).queue(function (next) {
        button.prop("disabled", false);
        next();
    });
});
span.message {
    display: none;
}
<body>
  <form id="form"> <span class="message">Some Message</span>

    <input type="button" id="formsubmit" value="Submit" />
  </form>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</body>

或者,您只需使用原生setTimeout功能。

答案 1 :(得分:1)

.delay()无法在此方案中使用,而不是使用.delay()使用setTimeout(),如下所示: -

$("#formsubmit").click(function() {
  $("#formsubmit").prop('disabled',true);
  setTimeout(function(){$("#formsubmit").prop('disabled',false);},750)
});

Working Demo

修改: -

  

.delay()只会延迟队列中的项目    动画

所以在这种情况下,而不是.dealy() setTimeout()将起作用。