0

我在列表视图中有以下布局:

 <EditItemTemplate>
                <tr class="<%# If(Container.DisplayIndex Mod 2 = 0, "", "a") %>">
                    <td style="text-align: center;width:50px;">
                        <asp:ImageButton ID="btnConfirmar" runat="server" CommandName="Update" ImageUrl="../images/Aceptar.ico">
                        </asp:ImageButton>
                    </td>
                    <td style="text-align: center;width:50px;">
                        <asp:ImageButton ID="btnCancelar" runat="server" CommandName="Cancel" ImageUrl="../images/Cancelar.ico">
                        </asp:ImageButton>
                    </td>
                    <td style="text-align: left;">
                        <asp:TextBox ID="txtZonaNombre" Text='<%#Convert.ToString(CType(Container.DataItem, KeyValuePair(Of Long, Mercurio.clsZonas)).Value.ZonaNombre)%>'
                            runat="server" Width="100%" />
                        <asp:RequiredFieldValidator ID="ZonaNombreValidador" ControlToValidate="txtZonaNombre"
                            Display="Dynamic" Text="La zona debe tener nombre" runat="server" />
                    </td>
                </tr>
            </EditItemTemplate>

我想要的是通过点击返回键(intro、enter、chr(13),无论你如何命名)来确认编辑,并在焦点位于 txtZonaNombre 文本框时通过点击 esc 键取消编辑。

我尝试使用 jquery 模拟“点击”,使用以下代码:

$("#txtZonaNombre").keypress(function (e) {
    if (e.which === 13) {
        $("#btnConfirmar").trigger('click');
        return false;
    }
});

但代码甚至没有被触发(我已经通过警报调用对其进行了检查)。

整个列表视图是用户控件的一部分(它位于 ascx 文件中),并且该控件位于母版页布局内(我指的是母版页中的 jquery 库),而列表视图位于更新面板内。

我感谢您的帮助!问候!

4

1 回答 1

0

您在控件上设置的 id 与在 html 中呈现的 id 不同(因为 ASP.NET 在它前面加上了父 NamingContainers 的 id)。

如果您使用的是 ASP.NET 2010,您可以将 ControlIDMode 设置为 Static 以确保 html 中的 id 相同。

或者,您可以检查 html 中的 id (在浏览器中查看源代码)并更改您的 JavaScript 以使用它。

于 2012-06-17T18:13:25.510 回答