Я нашел проблему с моим сайтом, и я выделил ее для компонентов 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.
Чтобы добавить, я часто видел 'отн = "внешний"' 'для href's в JQuery мобильного телефона. Также может быть проблемой, но не на 100% уверенной в этом. –
Добавление данных-ajax = "false", похоже, работает. Может ли это быть добавлено в форму? Обычно я вызываю вторую страницу из формы. Я поставил этот пример как тест. Однако ваше решение работает. – attentionjay
Я считаю, что его можно добавить в форму, но я не уверен. Я знаю, что пробовал это в какой-то момент, но не могу вспомнить, работает ли он отлично. Я также видел, что люди используют небольшой скрипт jQuery, который добавляет атрибут data-ajax к каждой ссылке, если они никогда не используют несколько страниц в одном файле.Я бы не рекомендовал этого, хотя из-за этого вы ограничиваете себя использованием других функций jqm, таких как панели. – zachmagic73