我一直在尋找這麼長的解決方案,而不是data-ajax="false"
,因爲這對我沒有用。jQuery Mobile在多頁文檔提交表單時保持加載第一頁
無論如何,在我的Phonegap應用程序中,當我使用jquery mobile提交表單時,我需要通過jquery中的常規提交函數來運行它,以便在它進入服務器之前操縱它。
我在電話上第一次對它進行加密,然後它進入數據庫以更安全。
無論如何,在我需要使用JQM切換到多頁面方法之前,我可以提交一個表單,它不會提交任何問題。
但是,當我只將HTML更改爲多頁設置時,我所得到的只是對登錄屏幕(第一頁)的刷新,無論我在那裏還是正在註冊。
此外,在測試中,如果我嘗試提醒任何事情,在函數內部或不顯示任何內容,那麼測試路線對我來說不起作用。
最重要的是我得到表單提交。
還有一件事,當我把代碼放在jsfiddle中時,所有東西,警報和所有東西都完美地工作。
所以我不知道它是否是phonegap或不。
JS小提琴鏈接 - http://jsfiddle.net/copilot0910/mVgLJ/
代碼
HTML
<h1>Login</h1>
<label for="uname">Username:</label>
<input type="text" name="uname" id="uname" value="" autocomplete="off" autocapitalize="off" />
<label for="pword">Password:</label>
<input type="password" name="pword" id="pword" value="" />
<input type="submit" value="Login" name="login_submit_btn" id="login_submit_btn" />
</form>
<a href="#register" class="ui-btn ui-shadow ui-corner-all ui-mini">Go Register</a>
</div>
</div>
<div id="register" data-role="page">
<div data-role="content">
<form id="register_form">
<h1>Register</h1>
<label for="uname_reg">Wanted Username:</label>
<input type="text" name="uname_reg" id="uname_reg" value="" autocomplete="off" autocapitalize="off" />
<label for="pword_reg">Password:</label>
<input type="password" name="pword_reg" id="pword_reg" value="" />
<label for="email_reg">Email:</label>
<input type="email" name="email_reg" id="email_reg" value="" autocomplete="off" autocapitalize="off" />
<label for="fname_reg">First Name:</label>
<input type="text" name="fname_reg" id="fname_reg" value="" autocomplete="off" autocapitalize="off" />
<label for="lname_reg">Last Name:</label>
<input type="text" name="lname_reg" id="lname_reg" value="" autocomplete="off" autocapitalize="off" />
<input type="submit" value="Register" />
<a href="#login" class="ui-btn ui-shadow ui-corner-all ui-mini ui-btn-inline">Go Login</a>
<a href="#tac" data-rel="popup" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-mini" data-transition="pop">You Accept our Terms</a>
</form>
</div>
</div>
</div>
</body>
jQuery的
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
$(document).ready(function() {
$("#login_form").submit(function() {
event.preventDefault();
alert("Login Alert");
$("#uname").blur();
$("#pword").blur();
$("#uname_reg").blur();
$("#pword_reg").blur();
$("#email_reg").blur();
$("#fname_reg").blur();
$("#lname_reg").blur();
var NoHashPwd = $("#pword").val();
var pwd = hex_sha512(NoHashPwd);
var usrname = $("#uname").val();
var loginData = {
"uname": usrname,
"p": pwd
};
$.ajax({
type: "POST",
url: "Not Telling",
data: loginData,
cache: false,
async: false,
dataType: "json",
success: function (resp) {
if (resp.msg === "good") {
doGeolocate();
} else {
alert(resp.msg);
}
$("#uname").val("");
$("#pword").val("");
$("#uname_reg").val("");
$("#pword_reg").val("");
$("#email_reg").val("");
$("#fname_reg").val("");
$("#lname_reg").val("");
return false;
}
});
});
$("#register_form").submit(function() {
event.preventDefault();
alert("Login Alert");
$("#uname").blur();
$("#pword").blur();
$("#uname_reg").blur();
$("#pword_reg").blur();
$("#email_reg").blur();
$("#fname_reg").blur();
$("#lname_reg").blur();
var NoHashPwd = $("#pword_reg").val();
var p = hex_sha512(NoHashPwd);
var uname = $("#uname_reg").val();
var fname = $("#fname_reg").val();
var lname = $("#lname_reg").val();
var email = $("#email_reg").val();
var regData = {
"uname": uname,
"p": p,
"fname": fname,
"lname": lname,
"email": email
};
$.ajax({
type: "POST",
url: "Not Telling",
data: regData,
cache: false,
async: false,
dataType: "json",
success: function (resp) {
if (resp.flag === "good") {
doGeolocate();
} else {
alert(resp.flag);
}
$("#uname").val("");
$("#pword").val("");
$("#uname_reg").val("");
$("#pword_reg").val("");
$("#email_reg").val("");
$("#fname_reg").val("");
$("#lname_reg").val("");
return false;
}
});
});
});
}
順便說一句,額外deviceready
功能是PhoneGap的,所以離開那是。沒有造成過問題。
1)使用'$(document)。on(「pageinit」,「#pageID」,function(){此頁面的代碼/處理程序等。});'而不是'.ready()'。 2)在'form'中包含登錄字段並使用'.on()'例如$(「#login_formID」)。on(「submit」,function(){reset of code});' – Omar
@Omar代碼在頂部出於某種原因被封存。我有表單標籤。另外,'.on()'沒有幫助。感謝壽。 – copilot0910