Подтвердить что ты не робот

Обработка кнопки поиска с помощью браузера iPhone?

Я разрабатываю веб-приложение в asp (mobile).

При использовании браузера iPhone для ввода некоторого текста поиска в текстовом поле поиска (<mobile:TextBox ID="txtSearchData" Runat="server" BreakAfter=False></mobile:TextBox>), iPhone запускает клавиатуру поиска, и когда я нажимаю кнопку поиска с помощью клавиатуры iPhone, она обновляется полную страницу, но нажав кнопку поиска под текстовым полем, она работает нормально.

Может ли кто-нибудь сказать мне, как это исправить?

Здесь мой код:

<body>
  <mobile:Form ID="frmSearch" Runat="server" Font-Name="NotSet" Font-Size="Small">
    <mobile:DeviceSpecific ID="dsSearch" Runat="server">
      <Choice Filter="isHTML32">
        <ScriptTemplate>
          <link href="StyleSheets/Common.css" rel="stylesheet" type="text/css"></link>
          <meta http-equiv="content-type" content="text/html; charset=utf-8" />
          <meta id="Meta1" name="viewport" content="width=device-width; initial-scale=1.0;" />
        </ScriptTemplate>
        <HeaderTemplate>
          <table cellspacing="2" width="100%">
            <tr>
              <td width="100%">
                <uc1:Header ID="ucHeader" runat="server" />
              </td>
            </tr>
          </table>
          <table>
            <tr>
              <td colspan="2"></td>
            </tr>
            <tr>
              <td align="right">
                Find :
              </td>
              <td>
                <mobile:DeviceSpecific>
                  <Choice="isHTML32">
                    <ContentTemplate>
                      <asp:DropDownList ID="lstGroups" runat="server"  OnSelectedIndexChanged="LstGroups_SelectedIndexChanged" AutoPostBack="true">
                      </asp:DropDownList>
                    </ContentTemplate>
                  </Choice>
                </mobile:DeviceSpecific>
              </td>
            </tr>
            <tr>
              <td align="right"> Search by:</td>
              <td>
                <mobile:SelectionList ID="lstSearchPreferences" Runat="server" BreakAfter=False>
                  <Item Selected=True Text="select" />
                </mobile:SelectionList>
              </td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>
                <mobile:SelectionList ID="lstSearchOptions" Runat="server" BreakAfter=False>
                </mobile:SelectionList> 
              </td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>
                <mobile:TextBox ID="txtSearchData" Runat="server" BreakAfter=False>
                </mobile:TextBox>
              </td>
            </tr>
            <tr id="trContractorFilter" runat="server" visible="False">
              <td align="right"> 
                <mobile:Label id="lblContractorFilter" BreakAfter=False Runat="server" Visible="True" >
                  Results:
                </mobile:Label>
              </td>
              <td>
                <mobile:SelectionList ID="lstContractorFilter" Runat="server" BreakAfter="True" Visible ="True" >
                  <Item Selected="True" Text="Active Permits" />
                  <Item Text="All Permits" />
                </mobile:SelectionList>
                (your permits only)
              </td>
            </tr>
            <tr>
              <td colspan="2"></td>
            </tr>
            <tr>
              <td colspan="2"></td>
            </tr>
            <tr>
              <td colspan="2"></td>
            </tr>
            <tr>
              <td colspan="2" align="center">
                &nbsp;&nbsp;&nbsp;
                <mobile:DeviceSpecific>
                  <Choice="isHTML32">
                    <ContentTemplate>
                      <asp:Button ID="btnSearch" runat="server" Text="Search" UseSubmitBehavior=true OnClick="BtnSearch_Click"/>
                    </ContentTemplate>
                  </Choice>
                </mobile:DeviceSpecific>
              </td>
            </tr>
            <tr>
              <td colspan="2" align="center">
                <mobile:Label ID="lblError" Runat="server" Font-Bold="True" ForeColor=Red Visible="false" BreakAfter=False></mobile:Label>
              </td>
            </tr>
          </table>
        </HeaderTemplate>
      </Choice>
    </mobile:DeviceSpecific>
  </mobile:Form>
</body>
4b9b3361

Ответ 1

В сочетании с этим вопросом и его ответом с помощью jQuery вы можете написать этот же код на своей странице и обработать клиент перед запуском submit.

Кроме того, вы можете использовать функции библиотеки $.ajax() для отправки формы асинхронно (в рамках вышеописанного блока кода и вообще не запускать form.submit()), что устраняет любое обновление страницы (независимо от того, где находится форма отправки событие запускается.)

<form id="hello-world" action="sayhello">
<input type="submit" value="Hello!">
</form>

Вы можете присоединить обработчик событий следующим образом:

$('#hello-world').submit(function(ev) {
    ev.preventDefault(); // to stop the form from submitting
    /* Validations go here */
    //this.submit(); // If all the validations succeeded
    $.ajax({
         url:'your_form_target',
         data:formData,
         success:function(data,textStatus, jqXHR){

         }
     });
});

Ответ 2

Установите атрибут Action mobile:Form на #. Это должно отменить действие обратной передачи по умолчанию формы, которое выполняется при нажатии кнопки "Поиск" на клавиатуре.

Ссылка

Ответ 3

По умолчанию элементы управления ASP.NET делают полную обратную страницу страницы, чтобы отправлять данные страницы на сервер.

Для обработки запроса AJAX на asp.net вы должны использовать элементы управления ScriptManager и UpdatePanel или использовать механизм клиентской стороны, например jQuery AJAX.

Ответ 4

Причина в том, что ваш поисковый BUTTON на самом деле не возбуждает отправку формы, она запускает JS-функцию: onClick="BtnSearch_Click"

BtnSearch_Click, вероятно, предотвращает действие по умолчанию (Отправка формы и перезагрузка страницы), что необходимо сделать для действия по умолчанию отправки по умолчанию.

Я не знаком с ASP, поэтому я, вероятно, не знаю, но вы должны уметь ставить

onSubmit="Btn_Click"

в форме, которую запускает кнопка поиска на iOS.