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>

私が望むのは、リターンキー(イントロ、エンター、chr(13)、名前は何でも)を押して編集を確認し、フォーカスがtxtZonaNombreテキストボックスにある間にescキーを押して編集をキャンセルすることです。

次のコードで、jqueryを使用して「クリック」をエミュレートしようとしました:

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

しかし、コードは起動されません(アラート呼び出しで確認しました)。

リストビュー全体はユーザー コントロールの一部であり (ascx ファイルにあります)、コントロールはマスター ページ レイアウト内にあり (マスター ページの jquery ライブラリを参照しています)、リストビューは updatepanel 内にあります。

私はあなたの助けに感謝します!よろしく!

4

1 に答える 1

0

コントロールに設定した ID は、html でレンダリングされた ID と同じではありません (ASP.NET が親 NamingContainers の ID を先頭に追加するため)。

ASP.NET 2010 を使用している場合は、ControlIDMode を Static に設定して、id が html で同じになるようにすることができます。

または、html の id を確認し (ブラウザーでソースを表示)、代わりにそれを使用するように JavaScript を変更することもできます。

于 2012-06-17T18:13:25.510 に答える