当存在多个默认值时,ASP.NET默认按钮(LinkBut​​ton)无法在Google Chrome中运行

时间:2011-11-15 11:13:26

标签: asp.net google-chrome

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

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

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

这个问题有解决办法吗?

更新

我在MSDN上读到LinkBut​​tons不适合设置为默认按钮。

“仅支持Button和ImageButton控件。”

我想这肯定是问题。

2 个答案:

答案 0 :(得分:0)

我个人从未经历过这种行为。 DefaultButton属性在Chrome中一直对我有用,但是如果你真的无法解决它,那么就有办法解决它。您可以将短JavaScript注入要为其触发按钮的控件。这是一个非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解决方案,可用于在同一个块中分配多个(未经测试,因此可能需要调整)。

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
});

答案 1 :(得分:0)

我在MSDN上读到LinkBut​​tons不适合设置为默认按钮。

“仅支持Button和ImageButton控件。”

相关问题