Обработка действия отправки двух текстовых полей

#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 (не то чтобы в его использовании был какой-то вред), поскольку единственная кнопка в любом случае стала бы стандартной.