0

我发现我的网站存在问题,我已将其隔离到 Jquery Mobile 组件中。我只是单击调用另一个 PHP 页面的 href 链接。在第二页上,我设置了一个表单和一个 Jquery 表单验证,用于检查是否选择了 SKU 按钮,如果是,它应该返回警报并取消表单提交。问题是当我从第一页链接到第二页时,表单验证代码不起作用。

如果我刷新页面,它工作得很好。我隔离了指向 Jquery Mobile 的链接,页面运行良好。Jquery Mobile 传递了一些东西,使页面无法完整加载。或者,更有可能是第一页的一些遗留物禁用了第二页上的验证码。

我可以补充一点,如果我完全在第二页上删除了指向 Jquery Mobile 的链接(根本没有样式),并且我从第一页链接到第二页,那么 Jquery Mobile 格式仍然会传递到第二页。我对此进行了广泛的调查,但我找不到任何以前提到的这个问题。我已经设置了测试页面来解决这个问题。

第 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>

第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>

我能得到的任何帮助都会很棒。这对我来说是个谜。

编辑:7-1-2013 我认为在解决这个问题时更新我发现的内容是值得的。禁用 AJAX 数据有效,但仅适用于链接。我很难让它在表单提交上工作。我最终使用以下脚本全局禁用 AJAX:

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

此脚本必须放在页面上的 Jquery Mobile 脚本之前。这将禁用整个页面的 AJAX 功能。AJAX 很棒,应该尽可能使用它。在我发现我的问题之前,我已经设置了我的网站的布局。可以更轻松地改造站点以使用 Jquery Mobile 功能。

4

2 回答 2

1

每当您链接到单独的 php 或 html 页面时,请尝试添加data-ajax="false"到您的标签。<a>

jQuery mobile 旨在让开发人员将多个页面放入同一个 html 或 php 文件中。所以它使用 ajax 来链接那些实际上只是 div 的“页面”。问题在于,默认情况下,jQuery mobile 对每个链接都使用 ajax,除非您另有说明。这可能会造成一些棘手的问题,当我第一次开始使用 jQuery mobile 时,我花了一段时间才明白。我认为 JQM 文档中有一个关于这个主题的非常好的文档。

于 2013-06-21T19:13:19.473 回答
0

添加 rel = "external" 对我有用

于 2013-10-04T02:51:47.873 回答