Предотвращение поиска "пост" поведение в Safari Mobile с помощью jQuery - PullRequest
1 голос
/ 20 декабря 2011

Я использую <input type="search" /> текстовые поля на сайте jQuery Mobile.JQM предоставляет отличные функциональные возможности прямо из коробки для этих типов полей, которые я хотел бы сохранить, однако я попал в ловушку.

У меня есть к сожалению ограничение на необходимость создания моего мобильного сайта в ASP.NET WebForms.Следовательно, вся моя разметка обернута в один элемент uber form.

Теперь, когда вы перейдете к вводу текста в поисковый ввод в Mobile Safari, iPhone / iPad представит изящную кнопку «Поиск»в нижней части клавиатуры.Это удобно, однако, похоже, для выполнения какой-то HTTP-записи (или отправки формы) в форму.Поскольку моя форма охватывает все, JQM возвращает меня на начальную целевую страницу - независимо от того, где я нахожусь на сайте.

Теперь к вопросу ... Я хотел бы предотвратить возникновение этой отправки и заменить некоторыемоей собственной логики с использованием JQuery.Я попробовал следующее (которое действительно срабатывает), однако, «post» или «submit» продолжают идти, несмотря на возврат false и предотвращение дефолта. Как перехватить это событие?

// Prevent form posts
$('form').live('submit', function (e) {

    // Custom logic here

    e.preventDefault(); // <-- fires, but does not prevent JQM from returning to landing page
    return false;
});

1 Ответ

1 голос
/ 20 декабря 2011

Попробуйте добавить data-ajax="false" к тегу формы. Похоже, что jQuery Mobile Framework все еще поддерживает событие submit и запускает собственную отправку AJAX формы.

<form data-ajax="false"...

Также вам следует отказаться от использования .live(). Начиная с версии jQuery 1.7, она устарела, и если вы используете jQuery 1.6 или выше, вы уже должны использовать .delegate().

$('form').live('submit', function (e) {

Изменяется на:

$(document).delegate('form', 'submit', function (e) {

jQuery Mobile 1.0 поставляется с jQuery Core 1.6.4, но если вы перейдете на jQuery Core 1.7 или выше, то .on() - это рекомендуемый метод для привязки событий. Приведенное выше объявление обработчика событий может быть написано с использованием .on() следующим образом:

$(document).on('submit', 'form', function (e) {

Источник: http://api.jquery.com/on

Вот демоверсия: http://jsfiddle.net/KAuFz/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...