51

我知道有很多关于它的问题,但我尝试了几种解决方案,但没有任何效果。

在我的 django 应用程序中,我有一个表单:

<form method='post'>
    <button type='submit'>Send</button>
</form>

用户提交表单后,我不想禁用该按钮。使用其他问题,我尝试了几件事,例如:

<button type='submit' onclick="this.disabled=true">Send</button>

当我单击时,该按钮被禁用......但未提交表单。对于每次尝试,我都有同样的问题:按钮被禁用或表单已提交。我找不到如何做到这两个...

我正在使用 Chrome。知道为什么我有这个问题吗?谢谢您的帮助。

4

15 回答 15

98

尝试这个:

$('form').submit(function() {
  $(this).find("button[type='submit']").prop('disabled',true);
});
于 2012-11-28T13:50:20.820 回答
28

我喜欢这样,不必遍历 DOM。将函数放在 setTimeout 函数上,这允许提交和禁用按钮后,即使 setTimeout 为 0

$(document).ready(function () {
$("#btnSubmit").click(function () {
    setTimeout(function () { disableButton(); }, 0);
});

function disableButton() {
    $("#btnSubmit").prop('disabled', true);
}
});
于 2016-04-25T16:20:47.987 回答
8

submit您可以在父表单的事件中禁用它:

$("form").on("submit", function () {
    $(this).find(":submit").prop("disabled", true);
});

确保仅在HTMLFormElement加载后才运行此代码,否则将不会绑定任何内容。为确保绑定发生,请从document-ready块内触发:

// When the document is ready, call setup
$(document).ready(setup);

function setup () {
    $("form").on("submit", function () {
        $(this).find(":submit").prop("disabled", true);
    });
}
于 2012-11-28T13:52:28.027 回答
5

这样的事情可能会奏效。

<button id="btnSubmit" type='submit'> Send </button>

<script>
     $("#btnSubmit").on("click", function(e){
          e.PreventDefault();
          $(this).closest("form")[0].submit();
          $(this).prop('disabled',true)
     });
</script>
于 2012-11-28T13:53:38.917 回答
5

试试这样

  <input type="submit" value="Send" onclick="javascript=this.disabled = true; form.submit();">
于 2012-11-28T13:52:25.360 回答
2

我的变体,禁用按钮,没有直接禁用,但只有可见隐藏:

<input type="submit" name="namebutton" value="Nahrát obrázek"  onclick="this.style.visibility='hidden';" ondblclick="this.style.visibility='hidden';"/>
于 2013-09-15T18:24:12.220 回答
2

你可以做这样的事情。这对我来说很好。

<form method='post' onSubmit='disableFunction()'>
// your code here
</form>

然后在脚本中,添加这个

<script>
function disableFunction() {
    $('#btn_submit').prop('disabled', true);
}
</script>
于 2017-05-02T06:40:39.370 回答
1

这个怎么样?

onclick="this.style.visibility='hidden';"

我会说,而不是禁用,隐藏它。

如果你想和disabled

onclick="this.style.disabled='true';"
于 2012-11-28T13:55:48.957 回答
1

在 Chrome 上遇到问题,没有提交表单。尝试了一堆不同的代码,这对我来说最有效(并且看起来最好的 imo):

  $('#form_id').submit(function() {
    $("input[type='submit']", this)
      .val("Please Wait...")
      .attr('disabled', 'disabled');
    return true;
  });

form_id替换为表单的 id。当然,课程也有效:$('.form_class')

来源:JavaScript 编码器

于 2016-11-11T16:37:09.880 回答
1

这最终成为我的最佳解决方案

$("form").submit(function disableSubmit() {
  $("input[type=submit]", this).prop("disabled", true);
});
于 2020-07-27T14:49:13.840 回答
0

我更喜欢这个:

<script>
    var submit = false;
    $('form').submit(function () {
        if (submit) { return false; }
        else { submit = true;}
    });
</script>

这样它还可以防止 Enter 键多次提交

于 2014-01-17T15:33:31.547 回答
0

如果您不想双击某个元素,请使用 .one()

<button id="submit" type="submit">Send</button>
<script>
$(function () {
$("#submit").one("click", function () {
//enter your submit code
 });
});

。一()

于 2016-08-01T07:24:35.790 回答
0

您必须防止表单被多次提交,禁用按钮不是正确的解决方案,因为表单可以通过其他方式提交。

JavaScript:

$('form').submit(function(e) {
    // if the form is disabled don't allow submit
    if ($(this).hasClass('disabled')) {
        e.preventDefault();
        return;
    }
    $(this).addClass('disabled');
});

正确禁用表单后,您可以自定义其外观。

CSS:

form.disabled {
    pointer-events: none;
    opacity: 0.7;
}
于 2019-02-01T16:20:30.797 回答
0

我正在使用 Chrome。知道为什么我有这个问题吗?

好吧,我第一次处理这个问题时,我是这样解决的:

function blockButtons() {
   $('button:submit').click(function(){
    $('button:submit').attr("disabled", true);
   });
}

这很完美,但是……在 Mozilla Firefox 中。谷歌浏览器没有提交,所以我改成这样:

function blockButtons() {
   $('button:submit').click(function(){
      var form = $(this).parents('form:first');
    $('button:submit').attr("disabled", true);
    $('button:submit').css('opacity', 0.5);
    form.submit();
   });
}

这在 Mozilla Firefox 中都有效,但是,之后我们的一些使用旧版本 IE 的用户遇到了两次提交的麻烦。也就是说,一个由javascript发起,一个由浏览器发起,忽略onclick的事实,无论如何都提交。我猜这可以通过 e.preventDefault 修复。

于 2016-01-22T13:23:00.620 回答
0

你可以做这样的事情。这对我来说很好。

$("button#submitted").click(function () {
        $("button#submitted").prop('disabled', true);
});

双击您的按钮。此代码将运行

于 2018-12-12T03:08:48.987 回答