2013-06-21 3 views
0

Я нашел проблему с моим сайтом, и я выделил ее для компонентов JQuery Mobile. Я просто нажимаю ссылку href, которая вызывает другую страницу PHP. На второй странице я установил форму и проверку формы JQuery, которая проверяет, была ли выбрана кнопка SKU, и если да, то она должна вернуть предупреждение и отменить отправку формы. Проблема в том, что когда я ссылаюсь на вторую страницу с первой страницы, код проверки формы не работает.JQuery Мобильная передача неизвестного параметра на страницу

Если я обновляю страницу, она работает нормально. Я выделил ссылку на JQuery Mobile, и страница работает отлично. JQuery Mobile передаёт что-то, что полностью загружает страницу. Или, скорее всего, есть некоторая переносимость с первой страницы, которая отключает код проверки на второй странице.

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

Page 1:

<html lang="en"> 
<head> 
    <meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1" > 
    <title>Customer Maintenance</title> 
    <link rel="stylesheet" type="text/css" href="styles.css" /> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" /> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js">  </script> 

</head> 
<body> 

Test 1 page 
<p><a href="test1.html">Home Page</a></p><hr> 
    <footer>Created by: attentionjay</footer> 
</body> 
</html> 

<a href="test2.php" >Test Inventory</a> 

Page 2:

<!doctype html> 

<html lang="en"> 
<head> 
    <meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1" > 
    <title>Customer Maintenance</title> 
    <link rel="stylesheet" type="text/css" href="styles.css" /> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" /> 
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script> 

    <script> 
    $(function() { 
      $('#custalert').bind('submit', function (e) { 
       if($("input:first").val() == "") { 
       alert("You must enter a Customer Alert"); 
       return false; 
      } 
     }); 
    }); 
    $(function() { 
      $('#queryinv').bind('submit', function (e) { 
       if($('#sku_checkbox').is(':checked') == true) { 
      alert("You must enter a SKU"); 
      return false; 
      } 
     }); 
    });  

</script> 
</head> 
<body> 
<div data-theme='a' > 
    <div style="padding:10px 20px;"> 
     <form action="inventory_inquiry.php" method="get" id="queryinv" >   
     <h3>Enter SKU</h3> 
     <fieldset data-role="controlgroup" data-type="horizontal" data-mini="true"> 
      <legend>Choose Input Type:</legend> 
      <input type="radio" data-theme="a" name="input" id="sku_checkbox" /> 
      <label for="sku_checkbox">SKU</label> 
      <input type="radio" data-theme="a" name="input" id="entire_checkbox" /> 
      <label for="entire_checkbox">Entire Inventory</label> 
     </fieldset> 

      <label for="sku" class="ui-hidden-accessible">SKU:</label> 
      <input type="text" name="sku" id="sku" value="" placeholder="Item SKU" data-theme="a"> 
      <input name="customer_id" type="hidden" value='<?php echo $customer_id; ?>'/> 
      <button type="submit" data-theme="b">Submit</button> 
     </form>  
    </div> 
</div> 
    <br> 
<p><a href="test1.html">Home Page</a></p><hr> 
    <footer>Created by: attentionjay</footer> 
</body> 
</html> 

Любая помощь, которую я мог бы получить было бы здорово. Это для меня загадка.

EDIT: 7-1-2013 Я думал, что было бы полезно обновить то, что я нашел, решая эту проблему. Отключение данных AJAX работает, но только для ссылок. Мне было трудно заставить его работать над подачей формы. Я в конечном итоге отключить AJAX глобально с помощью следующего сценария:

<script>$(document).bind("mobileinit", function(){ 
    $.mobile.ajaxEnabled = false; 
});</script> 

Этот сценарий должен быть помещен перед сценарием Jquery Mobile на этой странице. Это отключит функциональность AJAX для всей страницы. AJAX замечательный, и его следует использовать, когда это возможно. Я уже установил макет своего сайта, прежде чем обнаружил свою проблему. Сайт может быть легко модернизирован, чтобы использовать функциональность JQuery Mobile.

ответ

1

Попробуйте добавить data-ajax="false" к вашему тегу <a> всякий раз, когда вы ссылаетесь на отдельную страницу php или html.

jQuery mobile предназначен для разработчиков, чтобы поместить несколько страниц в один и тот же файл html или php. Поэтому он использует ajax для связывания между этими «страницами», которые на самом деле являются просто div. Проблема в том, что по умолчанию jQuery mobile использует ajax для каждой ссылки, если не указано иное. Это может создать некоторые проблемы с cooky, и мне потребовалось некоторое время, чтобы понять, когда я впервые начал работать с jQuery mobile. Я думаю, что в документации JQM есть довольно хороший документ по этой теме.

+0

Чтобы добавить, я часто видел 'отн = "внешний"' 'для href's в JQuery мобильного телефона. Также может быть проблемой, но не на 100% уверенной в этом. –

+0

Добавление данных-ajax = "false", похоже, работает. Может ли это быть добавлено в форму? Обычно я вызываю вторую страницу из формы. Я поставил этот пример как тест. Однако ваше решение работает. – attentionjay

+0

Я считаю, что его можно добавить в форму, но я не уверен. Я знаю, что пробовал это в какой-то момент, но не могу вспомнить, работает ли он отлично. Я также видел, что люди используют небольшой скрипт jQuery, который добавляет атрибут data-ajax к каждой ссылке, если они никогда не используют несколько страниц в одном файле.Я бы не рекомендовал этого, хотя из-за этого вы ограничиваете себя использованием других функций jqm, таких как панели. – zachmagic73

0

добавляющие отн = "внешних" работает для меня