在sumbit上禁用按钮并在提交后重新启用

时间:2015-06-30 07:51:04

标签: jquery html ajax

我在下面有一个脚本,通过ajax将数据提交给服务器并且运行正常。我想要实现的是在提交时禁用按钮并在提交后重新启用它。

$(document).ready(function(){
    $('.comment').on('submit',function(event){
        event.preventDefault();
        data = $(this).serialize();
        $.ajax({
        type: "POST",
        url: "user_comment.php",
        data: data
        }).success(function(msg) {
   $('#new_entry').html(msg);

            $('.textbox').val("");

        });
    });
});

HTML

<form name="form1" method="post" action="" class="comment">
  <p>
    <label for="comment"></label>
    <textarea name="comment" id="comment"></textarea>
  </p>
  <p>
    <input type="submit" name="button" id="button" value="Submit Comment">
  </p>
</form>

8 个答案:

答案 0 :(得分:1)

您可以使用prop()之类的

$(document).ready(function() {
    $('.comment').on('submit', function(event) {
        $('#button').prop('disabled', true);
        event.preventDefault();
        data = $(this).serialize();
        $.ajax({
            type: "POST",
            url: "user_comment.php",
            data: data
        }).success(function(msg) {
            $('#button').prop('disabled', false);
            $('#new_entry').html(msg);
            $('.textbox').val("");
        });
    });
});

答案 1 :(得分:1)

尝试以下代码。用户Ajax beforeSend event

$(document).ready(function () {
    $('.comment').on('submit', function (event) {
        event.preventDefault();
        data = $(this).serialize();
        $.ajax({
            type: "POST",
            url: "user_comment.php",
            data: data
            beforeSend: function () {
                $('#button').attr('disabled', true);
            },
            success: function () {
                $('#button').attr('disabled', false);
                $('#new_entry').html(msg);
                $('.textbox').val("");
            });
        });
    });

答案 2 :(得分:0)

只需添加两行代码即可将代码更新为以下内容,并且可以根据需要为您提供帮助。

$(document).ready(function(){
    $('.comment').on('submit',function(event){
        event.preventDefault();
        data = $(this).serialize();
       $("#button").prop('disabled',true); // disable
        $.ajax({
        type: "POST",
        url: "user_comment.php",
        data: data
        }).success(function(msg) {
   $('#new_entry').html(msg);

            $('.textbox').val("");
            $("#button").prop('disabled',false); // enable



        });
    });
});

供参考 - http://api.jquery.com/prop/

答案 3 :(得分:0)

您是否尝试在功能开始时设置禁用attr(this.attr('disabled','disabled'))并在成功时重新启用(this.removeAttr('disabled'))?

答案 4 :(得分:0)

我会尝试以下方法:

$(document).ready(function(){
    $('.comment').on('submit',function(event){
        document.getElementById("button").disabled = true;
        event.preventDefault();
        data = $(this).serialize();
        $.ajax({
        type: "POST",
        url: "user_comment.php",
        data: data
        }).success(function(msg) {
        document.getElementById("button").disabled = false;
   $('#new_entry').html(msg);
            $('.textbox').val("");
        });
    });
});

答案 5 :(得分:0)

如果您这样做是为了防止发布双重帖子,则禁用按钮不是正确的做法。您必须始终使用代码,而不仅仅是在DOM中:

$(document).ready(function(){
    $('.comment').on('submit',function(event){
        event.preventDefault();
        if ($('.comment').data('isWaiting')) {
            return;
        }
        data = $(this).serialize();
        $.ajax({
            type: "POST",
            url: "user_comment.php",
            data: data
        }).success(function(msg) {
            $('#new_entry').html(msg);
            $('.textbox').val("");
            $('.comment').data('isWaiting', false);
        });
        $('.comment').data('isWaiting', true);
    });
});

答案 6 :(得分:0)

$(document).ready(function() {
    $('.comment').on('submit', function(event) {            
        event.preventDefault();
        var button = $('#button');
        button.prop('disabled', true);
        data = $(this).serialize();
        $.ajax({
            type: "POST",
            url: "user_comment.php",
            data: data
        }).success(function(msg) {
            button.prop('disabled', false);
            $('#new_entry').html(msg);
            $('.textbox').val("");
        });
    });
});

答案 7 :(得分:-1)

禁用输入的点击事件。然后启用jQuery Ajax的成功函数。