表单上的jquery mobile changePage提交不正常

时间:2012-01-25 19:35:32

标签: jquery jquery-mobile

我正在尝试更改Jquery中表单提交的页面,但是,它无法正常工作。它会滑动显示相同的页面,而不是导航到目标页面。下面是代码。有什么见解吗?我也尝试使用"#mainpage""index.html#mainpage",结果仍然相同。链接:jsfiddle.net/7yRph/1

<!DOCTYPE html> 
<html> 
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>Multi-page template</title> 
    <link rel="stylesheet" href="jquery.mobile-1.0.min.css" />
    <script src="jquery-1.6.4.min.js"></script>
    <script src="jquery.mobile-1.0.min.js"></script>
    <script type="text/javascript">
    $('#launchpage').live('pagecreate',function(event) { 
        $('#fhome').submit( function () {
            $.mobile.changePage("mainpage");
        });
    });
    </script>
</head> 
<body> 

<!-- PAGE: launchpage -->
<div data-role="page" id="launchpage">
    <div data-role="header">
        <h1 data-theme="g" >Personal Details</h1>
    </div><!-- /header -->

    <div data-role="content" >  
        <div class="content-primary">
        <form id="fhome" method="POST" >
            <div data-role="none">
                <p> Lets begin: </p>
            </div>
            <br/>           
            <div data-role="fieldcontain">
                <fieldset data-role="controlgroup" data-type="horizontal" >
                    <legend>Are you providing information about yourself?</legend>
                        <label for="launchradioyes">Yes</label>
                        <input type="radio" name="radio-choice" id="launchradioyes" value="yes" />
                        <label for="launchradiono">No</label>
                        <input type="radio" name="radio-choice" id="launchradiono" value="no" />
                </fieldset>
            </div>
            <input type="submit" value="Next" data-theme="a" />
            <br/>
         </form>
    </div><!-- /content -->

    <div data-role="footer" data-theme="d">

    </div><!-- /footer -->
</div><!-- /launch page -->

<!-- PAGE: mainpage -->
<div data-role="page" id="mainpage">
    <div data-role="header">
        <h1>Testing page navigation II</h1>
    </div><!-- /header -->

    <div data-role="content" >  
        <div class="content-primary">
            <div data-role="none">
             <label for="idprimary">ID:</label>
             <input type="tel" name="idprimary" id="idprimary" value="" />
            </div>
            <br/>           
    </div><!-- /content -->

    <div data-role="footer" data-theme="d">
    </div><!-- /footer -->
</div><!-- /page one -->

</body>
</html>

2 个答案:

答案 0 :(得分:6)

您在表单标记中缺少action属性。这经常会破坏浏览器中表单的功能。试试这个:

<form id="fhome" method="POST" action="mainpage">

当你劫持提交行为时,它不会对你的代码产生负面影响。

<强>更新

此外,您在此之后错过了结束</form>代码和另一个结束</div>代码。

您需要使用提交按钮吗?是否可以使用按钮及其相应的点击事件?

http://jsfiddle.net/shanabus/7yRph/3/

更新2 ,使用表单提交

解决结束标记后,添加preventDefault方法调用以及here in the docs概述的data-ajax="false"属性。

示例:http://jsfiddle.net/shanabus/7yRph/9/

答案 1 :(得分:2)

挂钩submit时,应确保处理程序返回false(或在事件对象上调用preventDefault),以防止提交的默认行为。

相关问题