存在多个默认值时,ASP.NET 默认按钮 (LinkBut​​ton) 在 Google Chrome 中不起作用

标签 asp.net google-chrome

我有一个 ASP.NET Webforms 页面,其中包含多个默认按钮。在除 Google Chrome 之外的所有浏览器中,它们都按预期运行,但在 Chrome 中会触发错误的默认按钮。

我已经阅读了这个问题的一些常见原因,例如。无效的 HTML(将 Panel 放在 TABLE 元素中),但事实并非如此。

我在 stackoverflow 上看到了一个类似的问题,但没有一个公认的答案。

这个问题有什么解决办法吗?

更新:

我继续阅读 MSDN LinkBut​​tons 不适合设置为默认按钮。

“仅支持 Button 和 ImageButton 控件。”

我想这一定是问题所在。

最佳答案

我从未亲身经历过这种行为。 DefaultButton 属性在 Chrome 中一直对我有用,但是如果你不能真正解决它,有一种方法可以解决它。您可以将简短的 JavaScript 注入(inject)您想要触发按钮的控件中。这是一个非 jQuery 方法:

    StringBuilder script = New StringBuilder("");
    script.Append("if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {");
    script.Append("document.getElementById('" + Me.btnToFire.ClientID);
    script.Append("').click();return false;}} else {return true};");
    this.txtControlToAttach.Attributes.Add("onkeydown", script.ToString());

这是一个 jQuery 解决方案,可用于在同一 block 中分配多个(未经测试,因此可能需要调整)。
function fireButtonClick(ctrl, event) {
    if(event.which || event.keyCode){
        if ((event.which == 13) || (event.keyCode == 13)) {
            ctrl.click();
            return false;
        }
    }
    else {
        return true;
    }
}

$(document).ready(function() {
    $("#<%=this.ControlToAttach.ClientID%>").keypress(function(event) {
        fireButtonClick($("#<%=this.btnToFire.ClientID%>"), event);
    });

    $("#<%=this.ControlToAttach2.ClientID%>").keypress(function(event) {
        fireButtonClick($("#<%=this.btnToFire2.ClientID%>"), event);
    });

    // Just keep adding controls here
});

关于存在多个默认值时,ASP.NET 默认按钮 (LinkBut​​ton) 在 Google Chrome 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8135454/

相关文章:

javascript - 带有选中/未选中值的复选框切换开关

html - 在 Chrome 55 中,防止显示 HTML 5 视频的下载按钮

asp.net - 如何从ASP.NET Core Web API中删除重定向并返回HTTP 401?

asp.net - DBMS 如何影响应用程序性能?还有 Informix GUI 工具吗?

javascript - 有没有办法动态加载本地JS文件?

html - 如何完全覆盖 Chromium 禁用的输入字段颜色?

Javascript:历史记录未加载页面

javascript - Chrome 中奇怪的文档正文右填充问题

asp.net - UpdatePanel 完整回发

c# - Asp.net MVC 在不使用 html 助手的情况下重新填充表单