Javascript 将preventdefault附加到调用函数的.submit $(函数(){ $('#login')。提交(函数(e){ 登录(); e、 预防默认值(); }); }); 函数登录(){ $('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,数据).done(函数(数据){ $('btnLogin').removeAttr('disabled'); $(“#btnLogin”).css('color','#ffffff'); $(“#btnLogin”).css('background','#4ea885'); data=jQuery.parseJSON(数据); 如果(数据===false){ $(“.cover”).append('很抱歉,该密码与提供的用户名或电子邮件地址不匹配'); }else if(数据==true){ location.reload(); } });

Javascript 将preventdefault附加到调用函数的.submit $(函数(){ $('#login')。提交(函数(e){ 登录(); e、 预防默认值(); }); }); 函数登录(){ $('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,数据).done(函数(数据){ $('btnLogin').removeAttr('disabled'); $(“#btnLogin”).css('color','#ffffff'); $(“#btnLogin”).css('background','#4ea885'); data=jQuery.parseJSON(数据); 如果(数据===false){ $(“.cover”).append('很抱歉,该密码与提供的用户名或电子邮件地址不匹配'); }else if(数据==true){ location.reload(); } });,javascript,jquery,html,Javascript,Jquery,Html,} 我尝试了各种方法,我想将#login附加到函数login并防止提交您在问题中指定的代码几乎是正确的。问题在于login()函数中的$(this)部分$(此)没有访问表单属性的范围。如果我的猜测是正确的,$(this).attr('action')将返回'undefined',这将导致post请求失败,而e.preventDefault甚至不会执行。所以你的表格刚刚发布。您能检查一下您的控制台,并告诉我们您是否在那里遇到了任何错误 $(function() { $('#login').

}


我尝试了各种方法,我想将#login附加到函数login并防止提交

您在问题中指定的代码几乎是正确的。问题在于login()函数中的$(this)部分$(此)没有访问表单属性的范围。如果我的猜测是正确的,$(this).attr('action')将返回'undefined',这将导致post请求失败,而e.preventDefault甚至不会执行。所以你的表格刚刚发布。您能检查一下您的控制台,并告诉我们您是否在那里遇到了任何错误

$(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();
        }
    });
替换

$(function() {
    $('#login').submit(function(e){
        e.preventDefault();
        login();

    });
}); 


如果这不是问题,请发表意见,我将再次检查。

您所拥有的是正确的,但是如果您的
login()
函数抛出错误,将无法访问
e.preventDefault()
。因此,请检查您的控制台是否有错误…我的钱在
data
上不是有效的JSON…但是请将
login()
更改为
login。调用(this)
,以便
login
中的
this
的值将设置为
login
元素。您是否可以检查我的答案,看看这是否是导致语法错误的情况,未捕获的SyntaxError:意外令牌再次检查亲爱的!!
var url = $(this).attr('action');
var data = $(this).serialize();
var url = $('#login').attr('action');
var data = $('#login').serialize();