You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC提交按钮在Chrome中无法触发控制器,如何解决?

解决Chrome中ASP.NET MVC提交按钮无法触发控制器的问题

嘿,我之前也踩过这个坑!Chrome和IE对表单提交时按钮状态的处理逻辑差异很大——你当前的代码里,点击按钮后立刻把它禁用了,Chrome会因为按钮被禁用而直接中断后续的表单提交流程,但IE会先执行表单提交请求,再处理按钮禁用的操作,所以才会出现IE正常、Chrome失效的情况。

给你两个靠谱的解决办法:

方法一:延迟禁用按钮,给表单提交留足时间

把禁用按钮的操作延迟一小段时间,确保表单提交请求已经发起后再禁用按钮,修改后的代码如下:

<input type="submit" value="Create" id="btnSaveSubmit" name="btnSubmit" class="button" 
onclick="if (!($('#frID').valid())) { return false; } 
var btn = this; 
setTimeout(function(){ 
    btn.disabled = true; 
    btn.value = 'Saving...'; 
}, 100);" />

这里用setTimeout把禁用操作延迟100毫秒,足够Chrome完成表单提交的触发流程,同时也能达到防止重复点击的目的。

方法二:绑定表单的submit事件(更推荐)

把验证和按钮禁用的逻辑绑定到表单的submit事件上,这种方式能避免浏览器之间的差异,代码也更清晰:

首先,移除按钮上的onclick属性:

<input type="submit" value="Create" id="btnSaveSubmit" name="btnSubmit" class="button" />

然后添加一段jQuery代码(确保页面已经引入jQuery):

$(function(){
    // 绑定表单的submit事件
    $('#frID').submit(function(){
        // 先验证表单
        if (!$(this).valid()) {
            return false;
        }
        // 验证通过后禁用按钮并修改文本
        var submitBtn = $('#btnSaveSubmit');
        submitBtn.prop('disabled', true);
        submitBtn.val('Saving...');
    });
});

这种方式下,表单提交的逻辑由表单本身的事件触发,浏览器的处理会更一致,不会出现按钮禁用打断提交的问题。

内容的提问来源于stack exchange,提问作者Marielle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:54:55