0

我在一个带有默认按钮的 asp webforms 面板控件中有一个多行文本框。我需要通过按 Enter(Return)键而不是转到 textarea 中的下一行来提交表单。代码如下:

<asp:Panel ID="pnlChat" runat="server" CssClass="chat-entry" DefaultButton="btnChat">
     <p>Type Your Message and Press Enter</p>
          <asp:TextBox ID="txtChat" runat="server" CssClass="span12" TextMode="MultiLine" Rows="4"></asp:TextBox>
          <asp:Button ID="btnChat" runat="server" Text="Send" CssClass="btn" OnClick="btnChat_Click" />
</asp:Panel>

我尝试使用 jquery keypress 方法

  $("#<%= txtChat.ClientID %>").keypress(function (e) {
            if (e.which == 13) {
              //  alert('You pressed enter!');
              return false;
            }
        });

但是按回车键没有提交表单。建议/解决方案是最受欢迎的。

顺便说一句:面板位于更新面板内。

4

2 回答 2

2

您可以在 UpdatePanel 之外有一个隐藏按钮,然后调用该按钮的单击事件来提交表单。

在标记中:

...
</asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" style="display:none" OnClick="btnSubmit_Click" />

在代码中:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    //Do whatever you need
}

在脚本中:

$(document).ready(function () {
    $("#<%= pnlChat.ClientID %>").on("keypress","#<%= txtChat.ClientID %>", function(e){
        if (e.which == 13) {
            var s = $(this).val();
            $(this).val(s + "\n");
            $("#<%= btnSubmit.ClientID %>").trigger('click');
        }
    });
});

虽然我不明白为什么在使用 UpdatePanel 时需要发布整个表单。

于 2013-09-22T21:36:04.573 回答
1

如果您的多行文本框不起作用,则将按钮放在更新面板之外。它对我来说非常完美。我只是把我的asp按钮放在更新面板之外。这是我的多行文本框文本不起作用时的代码示例。

<td style="float: center; padding-left: 155px;">
                                        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                                            <ContentTemplate>
                                                <asp:Button ID="btnPre" OnClientClick="Validate();" ValidationGroup="group1" runat="server"
                                                    CssClass="alt_btn" Text="Preview Your Email" OnClick="btnPre_Click" TabIndex="8" />
                                                <asp:Button ID="Continue" OnClientClick="Validate();" ValidationGroup="group1" runat="server"
                                                    CssClass="alt_btn" Text="Continue" OnClick="Continue_Click" TabIndex="8" />
                                            </ContentTemplate>
                                        </asp:UpdatePanel>
                                    </td>

当我将按钮从更新面板的外侧放置时,多行文本框文本会完美更新。

 <td style="float: center; padding-left: 155px;">
                                                <asp:Button ID="btnPre" OnClientClick="Validate();" ValidationGroup="group1" runat="server"
                                                    CssClass="alt_btn" Text="Preview Your Email" OnClick="btnPre_Click" TabIndex="8" />
                                                <asp:Button ID="Continue" OnClientClick="Validate();" ValidationGroup="group1" runat="server"
                                                    CssClass="alt_btn" Text="Continue" OnClick="Continue_Click" TabIndex="8" />
                                    </td>
于 2014-01-01T12:01:02.543 回答