代码之家  ›  专栏  ›  技术社区  ›  BeemerGuy

LinkButton的onclick在IE8中不触发

  •  1
  • BeemerGuy  · 技术社区  · 15 年前

    下面的代码在Chrome中工作得很好。

    <asp:LinkButton runat="server" ID="lbEdit" OnClick="lbEdit_Click">
        <button type="button" class="edit">
             Edit
        </button>
    </asp:LinkButton>
    

    这里是CSS for按钮及其子类。

    button
    {    
        padding: 3px;
    }
    button.edit 
    {
        background:#3f6096;
        border:none;
        font:10px verdana;
        color:#fff;
        width:71px;
        margin-top:3px;
    }
    

    如你所见,没有什么特别的,只有颜色和漂亮的东西。
    我点击蓝色的编辑按钮,它会触发on click回发,很好……在铬!
    但是如果我在IE8中做同样的操作,它什么也不做,甚至检测不到点击。

    为了帮助找出问题所在,我删除了标签,只保留了“edit”这个词,在IE8中,它作为一个简单的带下划线的链接工作得很好;postback会触发。

    那么,为什么IE8不能接受LinkButton中的任何内容?

    4 回复  |  直到 10 年前
        1
  •  4
  •   John Nelson    15 年前

    如果需要处理回发并同时看起来像按钮,为什么要使用LinkButton?为什么不做一个按钮呢?在我看来,一个比另一个使用的唯一原因是外观。在功能上,它们都应该触发回发。

        2
  •  1
  •   Andrew Barber Eric Lafortune    15 年前

    你所做的不是你自己 想象上的 是的,但我想说的是,IE可能是最接近“正确”的一个。

    不应将按钮元素嵌套在提供链接的其他元素中。您可以简单地删除 button 从内部 LinkButton 将onclick附加到它上面,使样式工作,这样会很好。

    我之所以说IE的行为接近“正确”,是因为它正在做你在最里面的标签上定义的事情,而这不是什么。(您没有将任何操作附加到 按钮 元素,实际上)。但实际上,无论如何,在HTML中都不应该这样做,因为我认为行为一开始是没有定义的。

        3
  •  1
  •   RPM1984    15 年前

    你想在这里实现什么?

    您有一个服务器端链接按钮,以及一个嵌套的HTML按钮?

    当您需要 超链接 能够执行回发。

    你看过呈现的HTML吗?我不知道锚点标记中的按钮是否是有效的HTML。

    如果您希望回发由特定的服务器端事件处理,只需使用一个asp:按钮。

    如果没有,只需使用常规的HTML按钮。

        4
  •  0
  •   dave doe    10 年前

    你可以使用 CssClass:

    <asp:TemplateField HeaderText="Opciones">
        <ItemTemplate>
        <asp:LinkButton runat="server" Text="Hola!" CommandName="Deshabilitar" 
            CssClass="btn btn-primary"
            CommandArgument='<%# Item.Id %>' />
        </ItemTemplate>
    </asp:TemplateField>