Мобильный jQuery и отправка формы - PullRequest
5 голосов
/ 08 февраля 2011

Я решил перейти на платформу jQuery Mobile для мобильной темы с поддержкой Wordpress.

Сейчас я сталкиваюсь с проблемой отправки форм с хеш-тегом в URL и пытаюсь выполнить валидацию и публикацию в ajax.В основном это не работает.

ex: website.com/contact/ <- работает website.com/#/contact/ <- не работает </p>

Мне известно о rel = "внешний тег для ссылок, которые убирают # из URL.Но у меня есть сообщения в блоге с пользовательским плагином, который отображает формы регистрации, для которых я не смогу использовать rel = "external".Я думаю, я мог бы использовать это для всех ссылок, но это исключило бы плавные переходы.

Какие у меня есть варианты, чтобы попытаться заставить это работать?Я пытаюсь связать .submit с формой, сделать некоторую проверку, а затем опубликовать его с помощью AJAX.

Обновление -

<form id="myform" action="myfile.php" method="post">
<input type="text" id="mytext" name="mytext" />
<input type="submit" id="myform_submit" value="Submit">
</form>

и мой скрипт:

jQuery(document).ready(function() { 
 jQuery("#contact_submit").submit(function(){
        alert('WTF');
        }); 
 });

Изменено это значение:

<form id="myform" action="myfile.php" method="post">
<input type="text" id="mytext" name="mytext" />
<input type="button" id="myform_submit" value="Submit">
</form>

и мой скрипт:

jQuery(document).ready(function() { 
 jQuery("#contact_submit").click(function(){
        alert('WTF');
        }); 
 });

Оба не работают с # в URL.

Я также добавил это ПЕРЕД файлом jquery.mobile.js:

<script type="text/javascript">
jQuery(document).bind(
   "mobileinit", function(){
   jQuery.extend( jQuery.mobile, { ajaxFormsEnabled: false });
   });
</script>

Все еще не ходил.

(к вашему сведению, jQuery вместо $ из-за WordPress)

- еще одно обновление.

Поскольку я использую Wordpress, некоторые функции работают странно.Как is_home ().Независимо от того, на какой «странице» я нахожусь, функция возвращается как истинная.Я думаю, что это связано с вызовами ajax для каждой страницы.

Ответы [ 2 ]

7 голосов
/ 15 сентября 2011

Я не совсем уверен, где вы вызываете функцию jQuery.ready, но рекомендуемый способ регистрации обработчиков - привязка к событию pagecreate для ваших конкретных страниц.События pagecreate должны обрабатываться jQuery.ready только на первой странице.Недавно я создал сайт с использованием jQuery mobile и столкнулся именно с этой проблемой.Следующий код должен привести вас туда, где вы хотите быть:

jQuery(document).ready(function() {
    $("#id_of_page").live('pagecreate', function() {
        $("form").submit(function(event) {
            event.stopPropagation();
            event.preventDefault();

            // Do stuff here (usually AJAX);

            return false;
        });
    });
});

К сожалению, я недостаточно экспериментировал, чтобы определить, все ли это необходимо.Я знаю, что это помогло мне.Я почти инстинктивно добавляю return false ко всем отправленным формам, которые обрабатываются AJAX.Надеюсь, что это поможет!

2 голосов
/ 08 февраля 2011

Вы можете отключить упаковку AJAX.Читайте здесь: http://jquerymobile.com/demos/1.0a3/#docs/api/globalconfig.html

Также - я видел кое-что о проблемах с косой чертой, но теперь я не могу его найти, поэтому обязательно используйте альфа-версию JQM

[править]

Это упоминалось несколько раз раньше - в некоторых других темах.Если вы переходите на страницу, и JQM загружает ее с помощью AJAX, то берется только body И никаких документов. Уже срабатывает, так как домен уже готов;) (Я цитирую себя здесь)

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