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

当存在多个默认值时,ASP.NET默认按钮(LinkButton)在Google Chrome中不起作用,asp.net,google-chrome,Asp.net,Google Chrome,我有一个ASP.NET Webforms页面,其中有多个默认按钮。在所有接受Google Chrome的浏览器中,它们都按预期运行,但在Chrome中,会触发错误的默认按钮 我读过一些导致这个问题的常见原因,例如无效的HTML(将面板放在表元素中),但事实并非如此 我在stackoverflow上看到了一个类似的问题,但没有一个被接受的答案 这个问题有什么解决办法吗 更新: 我读到链接按钮不适合设置为默认按钮 “仅支持按钮和图像按钮控件。” 我想这一定是问题所在。我个人从未经历过这种行为。Def

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

我读过一些导致这个问题的常见原因,例如无效的HTML(将面板放在表元素中),但事实并非如此

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

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

更新:

我读到链接按钮不适合设置为默认按钮

“仅支持按钮和图像按钮控件。”


我想这一定是问题所在。

我个人从未经历过这种行为。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解决方案,可用于在同一块中分配多个值(未测试,因此可能需要调整)

函数FireButton单击(ctrl,事件){
if(event.which | event.keyCode){
if((event.which==13)| |(event.keyCode==13)){
ctrl.click();
返回false;
}
}
否则{
返回true;
}
}
$(文档).ready(函数(){
$(“#”)按键(函数(事件){
FireButton单击($(“#”)事件);
});
$(“#”)按键(函数(事件){
FireButton单击($(“#”)事件);
});
//继续在这里添加控件
});
我了解到链接按钮不适合设置为默认按钮


“仅支持按钮和图像按钮控件。”

默认按钮是什么意思。另外,您的意思是说,您单击了一个按钮,但调用了另一个按钮的事件操作吗?我认为使用TabIndexa可以让您将按钮放在asp:面板中,然后在面板上设置defaultbutton属性吗?比如,你能展示一些你用这些面板和它们的默认按钮设置得到的html代码吗?如果它很大的话,也许可以把其他的表单元素梳理掉。我在Chrome上也遇到过同样的问题。我发现将LinkButton更改为标准按钮解决了这个问题。一点CSS可以使两者看起来相似。
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
});