Кнопка поиска iPhone на клавиатуре не перенаправляет на нужную страницу

Я получил панель поиска и кнопку поиска на главной странице. Чтобы обработать кнопку ввода или поиска на мобильной клавиатуре, у меня есть функция, которая проверяет событие кода клавиши. функция вызовет событие щелчка для кнопки поиска, если код ключа является ключом поиска. Все работает на телефонах Android, но в iPhone, когда текущая страница является домашней страницей, она перенаправляет на страницу результатов поиска (которая является правильной страницей), но в остальном она всегда будет переходить на домашнюю страницу. Я пробовал несколько решений, которые нашел, но безуспешно. Некоторые из решений, которые я пробовал, меняли window.location.href, window.location.replace, помещая курсор CSS: указатель и атрибут onclick на кнопку поиска, но ничего из этого не работало.

Я не знаю, как работает кнопка поиска на iPhone.

ОБНОВЛЕНИЕ: я поместил предупреждение после строки btn.click(), чтобы отобразить атрибут действия в форме. Удивительно, но после нажатия кнопки "ОК" на предупреждении оно будет перенаправлено на нужную страницу, а затем я удалил предупреждение и снова вернулось к той же ошибке. Я схожу с ума.

HTML:

<asp:TextBox ID="searchboxMobile" runat="server" CssClass="m-index-tbx-
  search search-div-textbox" Text="Type Part Number Here"         
  onfocus="OnSearchBoxFocus('searchboxMobile');"         
  onblur="OnSearchBoxLostFocus('searchboxMobile');"         
  onkeypress="doClick('searchButtonMobile', event);" ></asp:TextBox>
<asp:Button ID="searchButtonMobile" runat="server"
    PostBackUrl="~/SearchResults.aspx"
    formnovalidate="formnovalidate" CssClass="search-button m-search-button" />

jQuery - кажется, что функция работает, так как она могла захватить ключ поиска или клавишу ввода, но событие щелчка, кажется, не работает должным образом. Я заменил этот код на window.location.href = "~/SearchResults.aspx" и window.location.replace("~/SearchResults.aspx"), чтобы он перенаправлялся на правильную страницу, но не работал.

function doClick(buttonName, e) {
  //the purpose of this function is to allow the enter key to 
  //point to the correct button to click.
  var key;

  if (window.event) {
    key = window.event.keyCode;     //IE
  } else {
    key = e.which;                  //firefox
  }

  if (key == 13) {
    //Get the button the user wants to have clicked
    var btn = document.getElementById(buttonName);
    if (btn != null) { //If we find the button click it
       btn.click();
       event.keyCode = 0;
    }
  }
}

1 ответ

Наконец я получил кнопку поиска для работы на iPhone. Кажется, что после выполнения btn.click () он дважды отправляет форму и, таким образом, изменяет атрибут действия на домашнюю страницу. Помещая e.preventDefault () перед событием btn.click(), он работает правильно. Кроме того, я не упомянул, что у меня есть две кнопки отправки, первая кнопка отправки предназначена для настольной версии, которая скрыта, только когда пользователь находится на мобильном устройстве. Я полностью удалил разметку для кнопки отправки (рабочий стол) вместо того, чтобы просто скрыть ее.

Надеюсь, что этот ответ может помочь кому-то в будущем.

Другие вопросы по тегам