Как я могу сделать существующую форму AJAX совместимой с iPhone? - PullRequest
0 голосов
/ 05 января 2010

Недавно мне сообщили, что приложение моей корзины покупок перестает работать при просмотре в Mobile Safari (iPhone, iPod Touch). Формы «добавить в корзину» используют подход «прогрессивного улучшения» для поддержки обновлений AJAX с использованием jQuery. Некоторое быстрое тестирование показало, что функциональность действительно работает с отключенным JavaScript. Все, что я до сих пор читал, указывает на то, что iPhone не поддерживает событие «form.onsubmit», к которому я сейчас привязываюсь с помощью jQuery для запуска транзакции AJAX.

Могу ли я внести изменения, чтобы добавить поддержку iPhone без , не обнаруживая браузер и не обслуживая альтернативные сценарии?

Текущий шаблон формы: <form method="post" action="" class="my-cart"> <fieldset> ... <input type="submit" name="my-button" value="add to cart" /> </fieldset> </form>

И сценарий события: $('form.my-cart').submit(function(){ ... });

Я добился большого успеха с точки зрения поддержки браузера (большинство браузеров поддерживают AJAX / JavaScript, но все остальные, кроме iPhone, будут возвращаться к регулярной отправке форм и т. Д. И т. Д.) Я бы хотел поддержать функцию AJAX в iPhone, однако я согласен на обход JavaScript. Таким образом, iPhone просто ничего не делает после нажатия кнопки отправки.

Ответы [ 3 ]

2 голосов
/ 10 января 2010

Justin

Вы можете проверить последние плагины Malsup в здесь . Вы можете увидеть пример того, как связать форму с этими плагинами. Есть 2 способа сделать это: ajaxSubmit() или простой ajaxForm().

Если вы используете ajaxSubmit(), тогда да, вы должны сделать это вручную, обработать событие нажатия кнопки отправки и вызвать метод. Попробуйте использовать ajaxForm(), плагины сделают все необходимое для вас. Каждый раз, когда форма отправляется, плагины автоматически обрабатывают ее, поэтому вам не нужно обрабатывать событие нажатия кнопки подтверждения самостоятельно.

Если вы думаете, что этот плагин тяжелый код, что вы думаете об этом? Эти плагины могут обрабатывать все типы стандартных форм, см. Тест здесь . Он работает лучше, чем другие плагины для обработки различных типов полей формы. Плагины также предоставляют различные методы для получения значения поля, такие как: formSerialize()

1 голос
/ 05 января 2010

Я использовал плагин jquery forms (http://jquery.malsup.com/form/) на iphone, используя функцию ajaxSubmit, и он прекрасно работал:

$('form.my-cart').ajaxSubmit(function(){
    ...
});
0 голосов
/ 10 января 2010

Спасибо обоим респондентам. Проблема оказалась в конфликте с другим, частично связанным кодом. Сама форма работала, но событие не вызывалось, потому что вышеупомянутый код каким-то образом предотвращал запуск события submit.

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