我有一个使用jQuery Mobile的登录页面,其中包含以下代码:
<div id="loginPage" data-role="page" data-theme="a">
<div data-role="content">
<div id="alerts"></div>
<form id="login-form">
<input type="text" id="username" name="username" value="" placeholder="username or email" />
<input type="password" id="password" name="password" value="" placeholder="password" />
<button id="login-button" onClick="userLogin()">Login</button>
</form>
</div><!-- /content -->
</div><!-- /page -->
这是我的javascript的一部分,当用户单击"登录"按钮时会调用它。如果其中一个字段为空,我会看到以下文本被注入到#alerts
div中,但在几分之一秒内,内容又消失了。
if (username.length == 0 || password.length == 0) {
//alert('Please enter your username or email and your password');
$('#alerts').html('Please enter your username or email and your password.').trigger('create');
}
我还使用.append()
而不是.html()
进行了尝试。两者的结果相同。我已经注释掉了我的测试alert()
,它在其中一个字段为空时有效。
我该怎么做才能确保内容在注入后仍保留在页面上
感谢您提供的任何帮助或见解-标记
根据Jasper的请求,以下是点击"登录"按钮时执行的所有javascript:
function userLogin() {
var username = $("#username").val();
var password = $("#password").val();
if (username.length == 0 || password.length == 0) {
$('#alerts').append('Please enter your username or email and your password.').trigger('create');
}
else {
$.post("services/user-status.php", { type: 'login', username: username, password: password },
function(data) {
var response = data.item;
console.log(response);
if (response.loggedIn == false) {
$('#alerts').html('The username/email and password you used did not work. Please try again.').trigger('create');
}
else {
localStorage.userID = response.userID;
localStorage.username = response.username;
localStorage.userStatus = 'loggedIn';
$.mobile.changePage('profile.html');
}
},'json');
}
}
看起来您需要停止click
事件的传播以触发按钮。您可以通过在click
事件处理程序中返回false
来完成此操作:
HTML--
<button id="login-button" onClick="return userLogin()">Login</button>
JS--
function userLogin() {
...
return false;
}
下面是一个演示:http://jsfiddle.net/BkMEB/3/
此外,由于您使用的是jQuery,因此可以绑定到<button>
元素,如下所示:
$('#login-button').bind('click', userLogin);
这与将onClick="return userLogin()"
作为按钮的属性相同,但允许您删除内联JS。
下面是一个演示:http://jsfiddle.net/BkMEB/4/