在Jquery Mobile中使用对话框确认表单提交

时间:2011-09-20 20:15:30

标签: jquery mobile

我正在学习Jquery Mobile的方法,但我仍然坚持使用jq移动对话框选项确认表单提交。当我尝试从我的对话框启动我的runSearch()函数时,我得到一个“错误加载页面”消息,如果我直接从srch.asp运行runSearch()函数页面加载就好了。我正在研究jqmobile的每日构建。

这是我到目前为止所拥有的:

srch.asp:

<!DOCTYPE html>
<html>
<head>
<title>Filter page</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  <link href="http://code.jquery.com/mobile/latest/jquery.mobile.min.css"     rel="stylesheet" type="text/css" />
  <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
  <script src="http://code.jquery.com/mobile/latest/jquery.mobile.min.js"></script> 
</head>
<body  >
 <div data-role="page"  data-add-back-btn="true"  id="main">
  <div data-role="header" data-theme="b" data-position="inline">    
    <title>Filter page</title>
    <script language="JavaScript" type="text/javascript"> 
    var count = 26;
    function doSearch(){
        //var sqlStr = generateSQL();
        var sqlStr = 'xxx';
        document.getElementById('sqlSrch').value = sqlStr;         
        if (count > 25){
            $("#lnkDialog").click(); 
        }
        else{           
            runSearch();
        }             
    }
    function runSearch(){
        $.mobile.changePage( "/mobile/famName/results/en", {
            type: "post", 
            data: $("form#frmSelectors").serialize()
        });        
    }
    </script>
  </div><!-- /header -->
  <div data-role="content"> 
    <form id='frmSelectors' method="post"  action="/mobile/famName/results/en">
      <input type="hidden" name="sqlSrch" id="sqlSrch" />
      <input type="hidden" name="famID" value="xxx" />
      bunch more inputs go here....
      <input type="button" value="Search" id='srch' onclick="doSearch()" style="srcButton"/>
      <a id='lnkDialog' href="#toomany.asp" data-rel="dialog" data-transition="pop"></a> 
    </form>
    </div><!-- /content -->        
    </div><!-- /page -->      

     </body>
    </html>

toomany.asp:

<!DOCTYPE html>
<html>
<head>
<title>Warning</title>
  <link href="http://code.jquery.com/mobile/latest/jquery.mobile.min.css" rel="stylesheet" type="text/css" />
  <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
  <script src="http://code.jquery.com/mobile/latest/jquery.mobile.min.js"></script>
</head>
<body>
 <div data-role="dialog" id="dialog">
  <div data-role="header">
    <h1>Warning</h1>
  </div>    
  <div data-role="content"  data-theme="b">
    <div id="text">Error Message</div>
    <a href="#" data-role="button" data-rel="back" data-transition="slidedown" data-theme="b">Yes</a>  
    <a href="#" onclick="runSearch();" data-role="button" data-rel="dialog" data-transition="slidedown" data-theme="c">No</a>
   </div> 
</div> 
</body>
</html>

2 个答案:

答案 0 :(得分:0)

在您的srch.asp中,您提供了以下链接:

  <a id='lnkDialog' href="#toomany.asp" data-rel="dialog" data-transition="pop"></a>

链接到#toomany.asp将链接到同一页面中的锚点,但您有一个要链接的真实页面,请参阅此处了解详细信息: http://jquerymobile.com/demos/1.0b3/docs/pages/page-links.html

您应该使用此链接来链接到另一个页面作为对话框:

  <a id='lnkDialog' href="toomany.asp" data-rel="dialog" data-transition="pop"></a>

答案 1 :(得分:0)

复制形式@SenadMeškin的评论:

尝试添加return false;在runSearch();

之后

这解决了我正在开发的基于JQMobile的Web应用程序上的相同错误。表单提交后,出现“错误加载页面”错误。只需将行return false;添加到正在运行的函数上就可以修复错误。虽然这似乎不适用于OP其他人在这里指导的其他人可能会发现这有用。