#c# #asp.net #textbox #webforms #ascx
#c# #asp.net #текстовое поле #веб-формы #ascx
Вопрос:
У меня есть ASP.net страница.
В котором есть элемент управления вкладкой Ajax Toolkit.
В котором есть вкладки.
Которые имеют пользовательские элементы управления ascx, которые я написал.
У меня есть текстовое поле, которое выполняет действие поиска. Оно объявляется следующим образом:
<asp:TextBox ID="txtPrereqSearch" runat="server"
ontextchanged="txtPrereqSearch_TextChanged"></asp:TextBox>
Ничего особенного. Этот формат работает уже несколько месяцев. Кнопки отправки нет. Он просто отправляет ответ, когда я нажимаю enter. Проблема возникла, когда я добавил второй пользовательский элемент управления, использующий функцию того же типа. Теперь браузеры не выполняют обратную отправку, когда я ввожу что-либо в любом из этих текстовых полей и нажимаю enter.
Похоже, что браузеры по умолчанию обрабатывают одно текстовое поле в одной форме, но это поведение меняется, когда число достигает двух.
Есть ли простой способ обойти это? Думаю, я могу создать скрытую кнопку отправки, но, похоже, есть лучший способ справиться с этим, когда функциональность находится в двух отдельных пользовательских элементах управления.
Мы ценим ваши отзывы!
Ответ №1:
Проверьте это: http://www.allasp.net/enterkey.aspx
Поведение по умолчанию без кнопки отправки, похоже, зависит от браузера, и поведение действительно может зависеть от количества элементов управления вводом.
Я бы добавил скрытую кнопку «отправить» (например, style="display:none;"
), которая должна гарантировать, что она всегда отправляется.
Ответ №2:
Ответ немного отличался от того, что я ожидал, но с философской точки зрения был похож на мою первоначальную идею, которую подкрепил @jamietre.
Мне пришлось окружить элементы управления <asp:Panel>
тегом с DefaultButton
атрибутом. A-like-a so:
<asp:Panel ID="ButtonPanel" runat="server" DefaultButton="btnSubmit">
<asp:Label ID="Label1" runat="server" Text="Course:"></asp:Label>
<asp:TextBox ID="txtPrereqSearch" runat="server"
ontextchanged="txtPrereqSearch_TextChanged"></asp:TextBox>
<asp:TextBoxWatermarkExtender ID="txtPrereq_TextBoxWatermarkExtender"
runat="server" Enabled="True" TargetControlID="txtPrereqSearch"
WatermarkCssClass="Watermark" WatermarkText="e.g., MATH201"></asp:TextBoxWatermarkExtender>
<asp:Button ID="btnSubmit" CssClass="InvisibleSubmit" runat="server" Text="Submit" OnClick="txtPrereqSearch_TextChanged"/>
</asp:Panel>
Комментарии:
1. Я думаю, что это сработало бы даже без использования DefaultButton (не то чтобы в его использовании был какой-то вред), поскольку единственная кнопка в любом случае стала бы стандартной.