2013-02-20 105 views
0

我花了一天的时间来解决以下问题。我试图让PhoneGap和jQuery-mobile运行。该应用程序启动,但如果我提交表单,他再次加载相同的站点,忽略form.js中的所有内容(请参阅下面的html代码)。 我有这样的HTML代码:PhoneGap&jQuery Mobile:脚本无法加载

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <meta name="format-detection" content="telephone=no" /> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" /> 
    <link rel="stylesheet" type="text/css" href="css/jquery.mobile-1.2.0.min.css" /> 
    <script type="text/javascript" src="js/jQuery/jquery-1.9.1.min.js"></script> 
    <script type="text/javascript" src="js/jQuery/jquery-migrate-1.0.0.js"></script> 
    <script type="text/javascript" src="cordova-2.4.0.js"></script> 
    <script type="text/javascript" src="js/index.js"></script> 
    <script type="text/javascript" src="js/form.js"></script> 
    <script type="text/javascript" src="js/jQuery.mobile/jquery.mobile-1.2.0.min.js"></script> 
    <title>SecureBook</title> 
</head> 
<body onload="app.initialize();"> 
    <div data-role="page"> 
     <div data-role="header"> 
      <h1>Welcome</h1> 
     </div> 
     <div data-role="content"> 
      <form id="userdata"> 
       <input type="text" id="username" placeholder="Username" autofocus> 
       <input type="password" id="password" placeholder="Passoword"> 
       <input type="submit" value="Anmelden" data-icon="forward" data-theme="b"> 
      </form> 
     </div> 
     <script> 
      gotLoaded(); 
      console.log("in HTML"); 
     </script> 
    </div> 
</body> 

这似乎是因为他并没有叫)gotLoaded功能(也console.logging什么,他不会加载form.js。该form.js看起来像:

function gotLoaded(){ 
console.log("loaded form"); 
}; 
$('#userdata').submit(function(event){ 
    console.log("transmitted form"); 
    event.preventDefault(); 
    var user = $('#username').val(); 
    var password = $('#password').val(); 
    $.mobile.changePage("sites/contacts.html",{ 
     transition: "none" 
    }); 
}); 

他没有然而加载所有其他脚本出来的JS文件夹,但不会从form.js.执行任何至少不是在我的Android手机上,在浏览器中,他向我展示了我登录的内容。我希望你能帮助我。 非常感谢, stiller_leser

P.S.只是看到他没有记录(“传输表单”)。

+0

如果它是不是对你的问题,压缩您的代码,并将其发送到马的电子邮件,我会解决它。 – Gajotres 2013-02-20 19:29:44

+0

感谢您的报价,适用于我,如下所示。不是一个好的解决方案,但它的工作。尽管对“为什么”的回答是受欢迎的。 – 2013-02-20 21:55:07

回答

0

您可以尝试在头部的页面显示处理程序(http://jquerymobile.com/demos/1.0rc3/docs/api/events.html)中添加提交事件处理程序,但还需要为页面提供一个标识。

<script> 
    $('#pageID').live("pageshow", function() { 
     $('#userdata').submit(function(event){ 
      console.log("transmitted form"); 
      event.preventDefault(); 
      var user = $('#username').val(); 
      var password = $('#password').val(); 
      $.mobile.changePage("sites/contacts.html",{ 
       transition: "none" 
      }); 
     }); 
    }) 
</script> 
+0

嗨,我为我工作如下所示: – 2013-02-20 21:55:53

0

适用于我,如下所示。不知道为什么。似乎最后添加我的表单脚本确保所有jQuery-Stuff已加载。这是最终的代码。

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <meta name="format-detection" content="telephone=no" /> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" /> 
    <link rel="stylesheet" type="text/css" href="css/jquery.mobile-1.2.0.min.css" /> 

    <script type="text/javascript" src="cordova-2.4.0.js"></script> 
    <script type="text/javascript" src="js/index.js"></script> 
    <script type="text/javascript" src="js/jQuery/jquery-1.9.1.min.js"></script> 
    <script type="text/javascript" src="js/jQuery/jquery-migrate-1.0.0.js"></script> 
    <script type="text/javascript" src="js/jQuery.mobile/jquery.mobile-1.2.0.min.js"></script>  
    <title>SecureBook</title> 
</head> 
<body onload="app.initialize();"> 
    <div data-role="page"> 
     <div data-role="header"> 
      <h1>Welcome</h1> 
     </div> 
     <div data-role="content"> 
      <form id="userdata" onsubmit="gotLoaded();"> 
       <input type="text" id="username" placeholder="Username" autofocus> 
       <input type="password" id="password" placeholder="Passoword"> 
       <input type="submit" value="Anmelden" data-icon="forward" data-theme="b"> 
      </form> 
     </div> 
     <script> 
      //WORKS 
      console.log("in HTML"); 
      //JQUERY works here 
      console.log($('title').html()); 
     </script> 
    </div> 

<!-- Put customs scripts here as it seems, that jQuery loads to slow in the head and scripts already run --> 
<script type="text/javascript" src="js/form.js"></script> 
</body>