Включите многострочное текстовое поле, чтобы заполнить форму при вводе ключа в asp.net Webforms

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;
            }
        });

Но форма не подается, нажимая клавишу ввода (возврата). Предложения и решения приветствуются.

btw: панель находится внутри панели обновления.

Теги:
webforms

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.

  • 0
    чем вы за ваше решение. Он работает нормально, как и ожидалось, если я помещу `btnSubmit 'в панель обновления. У меня несколько кнопок отправки на странице с несколькими панелями обновлений. Когда я отправляю текстовую область, я хотел обновить содержимое только внутри этой панели обновления. если я помещаю btnsubmit для textarea за пределы панели обновления, вся страница отправляется обратно.
  • 0
    Мне нужно использовать код jquery внутри function pageLoad(sender, args) { //code here } чтобы скрипт работал после частичной обратной передачи.
Показать ещё 2 комментария
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>
  • 0
    хмм. но наше требование работает отлично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню