$(function() {
$('#login').submit(function(e){
login();
e.preventDefault();
});
});
function login() {
$('#btnLogin').attr('disabled','disabled');
$("#btnLogin").css('background', 'url(/imgs/submit.gif) 50% -3px');
var url = $(this).attr('action');
var data = $(this).serialize();
$("#btnLogin").css('color', 'transparent');
$.post(url, data).done(function(data) {
$('#btnLogin').removeAttr('disabled');
$("#btnLogin").css('color', '#ffffff');
$("#btnLogin").css('background', '#4ea885');
data = jQuery.parseJSON(data);
if(data === false) {
$(".cover").append('<div class="alert alert-warning">We\'re sorry, that password does not match the username or email address provided.</div>');
} else if (data == true) {
location.reload();
}
});
}
我尝试了各种方式,我想将#login附加到函数登录并阻止提交
答案 0 :(得分:0)
$(function() {
$('#login').submit(function(e){
e.preventDefault();
login();
});
});
答案 1 :(得分:0)
您在问题中指定的代码几乎是正确的。问题在于login()函数中的$(this)部分。 $(this)没有访问表单属性的范围。如果我的猜测是正确的$(this).attr('action')将返回'undefined',这会导致你的帖子请求失败,反过来你的e.preventDefault甚至都不会执行。所以你的表单刚刚发布。您是否可以检查您的控制台,如果您在那里遇到任何错误,请告诉我们。
替换
var url = $(this).attr('action');
var data = $(this).serialize();
与
var url = $('#login').attr('action');
var data = $('#login').serialize();
如果这不是问题,请评论,我会再次检查。