У меня есть многострочный текстовый ящик с панелью управления 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: панель находится внутри панели обновления.
Вы можете иметь скрытую кнопку за пределами 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.
если ваш многострочный текстовый ящик не работает, поместите свои кнопки извне панели обновления. его работа отлично для меня. Я просто помещаю свои кнопки 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>
function pageLoad(sender, args) { //code here }
чтобы скрипт работал после частичной обратной передачи.