php / jquery-mobile:第二页未在两页表单上运行验证

时间:2012-12-21 07:19:37

标签: php forms validation jquery-mobile

我是php的新手,我正在尝试制作一个非常简单的双页表单。任何帮助或指导将非常感谢!

问题:

  • 从第一页开始,第二页不会运行错误验证。
  • 两个页面都正确运行错误验证,直接输入网址

设定:

  • Page 1一个是HTML。它发布到Page2。
  • 第2页是php,第1页的数据存储在输入字段

直播示例:

http://www.linplusg.com/page1.html

在IE中,来自第1页的URL看起来不正确: http://www.linplusg.com/page1.html#/page2.php

在FF和Chrome中,网址看起来不错,但我认为发生了闪烁/刷新。

除了在对页面进行POST时打开页面,还会发生其他事情吗?值得存储新字段吗?我做表格动作错了吗?茫然而困惑......

非常感谢您的任何帮助或建议。我整晚都在寻找答案,我的大脑感觉就像果冻。好像我错过了一些简单的东西?!

Page1代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>
        </title>
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
        <link rel="stylesheet" href="css/my.css" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js">
        </script>
        <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js">
        </script>
        <script>
          $(document).ready(function(){
            $("#initialForm").validate();
            });
        </script>
    </head>
    <body>
        <!-- Home -->
        <div data-role="page" id="page1">
            <div data-role="content">
              <form id="initialForm" method="post" action="page2.php">
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup" data-mini="true">
                        <label for="textinput3">
                            Zip Code
                        </label>
                        <input name="zip" id="zip" maxlength=5  value="" type="text" class="required" />
                    </fieldset>
                </div>
                <input type="submit" data-theme="e" value="Submit" />
              </form>  
            </div>
        </div>
    </body>
</html>

代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>
        </title>
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
        <link rel="stylesheet" href="css/my.css" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js">
        </script>
        <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js">
        </script>    
        <script>
          $(document).ready(function(){
            $("#fullForm").validate();
            });
        </script>
    </head>
    <body>
        <!-- Home -->
        <div data-role="page" id="page1">
            <div data-role="content">
              <form id="fullForm" method="get" action="">
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup" data-mini="true">
                        <input name="zip" id="zip"  value="<?php echo $_POST["zip"]; ?>" type="" />
                    </fieldset>
                </div>
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup" data-mini="true">
                        <label for="textinput3">
                            First Name
                        </label>
                        <input name="first_name" id="first_name" placeholder="" value="" type="text" class="required"/>
                    </fieldset>
                </div>
                <input type="submit" data-theme="e" value="Submit" />
              </form>  
            </div>
        </div>
    </body>
</html>

3 个答案:

答案 0 :(得分:1)

为防止这种情况,您需要在page1的表单元素中指定data-ajax =“false”。

<form id="initialForm" method="post" action="page2.php" data-ajax="false">

有关详细信息,请参阅http://jquerymobile.com/test/docs/forms/forms-sample.html

答案 1 :(得分:0)

没有PHP代码,我可以猜测,但也许是因为在第二种形式中你有一个method="get"而不是method="post",而在PHP中你检查$_POST变量?

答案 2 :(得分:0)

您可以保留ajax过渡,并且仍然可以通过在div中使用数据角色“页面”移动脚本来在第二页上执行javascript。

请在此处查看此答案:https://stackoverflow.com/a/6428127/2066267