更改按钮文本但保留默认行为

时间:2014-07-05 20:11:16

标签: javascript jquery

我有一些简单的jQuery可以在点击按钮时更改按钮的文本

<button type="submit" id="zipUploadButton" class="btn btn-primary">Upload</button>

$uploadButton.click(function(){
  $(this).text('please wait').attr("disabled", "disabled");
});

问题是它似乎阻止默认行为(表单提交,我仍然希望发生)。有没有办法确保保留默认行为,或者采取其他方式来做我上面尝试过的工作?

3 个答案:

答案 0 :(得分:1)

禁用表单提交事件中的按钮,而不是单击事件。以下代码假定$form包含$uploadButton的父表单。

$form.submit(function(){
    $uploadButton.attr('disabled', 'disabled');
});

答案 1 :(得分:1)

您可以使用timeout删除已禁用的属性以便提交:

对于JQuery 1.6 +:

$('#zipUploadButton').click(function(){
    var button = $(this);
    button.prop('disabled', true);
    setTimeout(function() {
         button.prop('disabled', false);
    },1000);
    $("#form1").submit();
});

否则,如评论中所述,如果禁用该按钮,则无法提交表单:more info

对于JQuery 1.5及以下版本:

要设置disabled属性,您可以使用:

button.attr('disabled','disabled');

要再次启用,请使用.removeAttr()

button.removeAttr('disabled');

<强> Credits

答案 2 :(得分:0)

您必须延迟禁用按钮,直到事件完成。这样的事情可以帮助你。

$uploadButton.click(function(){
    var $this = $(this);
    $this.text('please wait');
    setTimeout(function(){
        $this.attr("disabled", "disabled");
    }, 10);
});