Javascript 在单击提交按钮时禁用该按钮,将阻止在Google Chrome上提交表单

Javascript 在单击提交按钮时禁用该按钮,将阻止在Google Chrome上提交表单,javascript,jquery,css,html,asp.net-mvc-4,Javascript,Jquery,Css,Html,Asp.net Mvc 4,我已将以下脚本添加到我的布局视图中,在我的asp.net mvc中:- $(document).ready(function () { $('.btn.btn-primary').click(function () { $(this).prop("disabled", true); if (!$('form').valid()) { $(this).prop("disabled", false); retur

我已将以下脚本添加到我的布局视图中,在我的asp.net mvc中:-

$(document).ready(function () {
    $('.btn.btn-primary').click(function () {
        $(this).prop("disabled", true);
        if (!$('form').valid()) {
            $(this).prop("disabled", false);
            return false;
        }
    });
    $('form').change(function () {
        $('.btn.btn-primary').prop("disabled", false);
    });

我的脚本的目的是禁用提交按钮,并在模型无效或用户更改表单值时重新启用它们。上面的脚本在IE和Firefox上运行良好,但在Chrome上我无法提交表单,因为当用户单击提交按钮时,按钮将被禁用,但表单将不会提交。你知道我如何在Chrome上解决这个问题吗?

在按钮的点击事件中禁用按钮-在表单的提交事件中禁用它(你也可以检查表单的有效性)

这样,它将在所有浏览器中普遍工作

<form action="http://www.microsoft.com">
  <input class="btn-primary" type="submit" value="submit"/>
</form>


$('form').submit(function() {
  $('input.btn-primary').prop("disabled", "disabled");
})

$('form')。提交(函数(){
$('input.btn primary').prop(“禁用”、“禁用”);
})

我遇到了一个相同的问题,即当按钮被禁用时,Google Chrome没有触发我的提交事件

背景信息:我有一个带有按钮的表单,每当单击该按钮时,该表单都将被禁用。因此PHP提交代码不会被多次调用。提交是在Drupal后端上运行的,在我的例子中,它是一个定制的提交钩子。但可以肯定的是,在任何其他CMS工作。 但这不是问题所在。真正的问题是Javascript代码正在禁用该按钮,而Google Chrome认为该按钮完全失效,而不仅仅是禁用。所以它不再触发任何代码

但这个问题很容易解决

所以这段代码在Firefox上运行
/IE

(function($) {
Drupal.behaviors.somebehaviour = {
    attach: function(context, settings) {
        $('#edit-submit').click(function (e) {
            $('#edit-submit').val('Is saved...');
            $('#edit-submit').prop('disabled', 'disabled');
        });
    }
};
})(jQuery);
要在Chrome上运行,还需要添加以下行:

$(this).parents('form').submit();
因此,对于本例,最终将是:

(function($) {
Drupal.behaviors.somebehaviour = {
    attach: function(context, settings) {
        $('#edit-submit').click(function (e) {
            $('#edit-submit').val('Is saved...');
            $('#edit-submit').prop('disabled', 'disabled');
            $(this).parents('form').submit();
        });
    }
};
})(jQuery);

你是说我的方法错了吗?你能告诉我如何禁用提交事件吗?前提是正确的,但正如你所看到的,它并不适用于所有浏览器。这里有一个替代方案的小演示:它在chrome和IE&Foreox上运行良好。所以我现在应该是安全的?或者使用您的代码还有其他限制?您提供的链接正在讨论不同的问题。在我的情况下,我可以禁用chrome上的按钮。但是我的问题是表单不会被提交..我喜欢这个答案,它允许我在通用事件处理程序中处理这个问题,而不是将它放入表单提交中