如何在javascript中使用preventDefault删除默认操作?

如何在javascript中使用preventDefault删除默认操作?,javascript,jquery,node.js,ajax,Javascript,Jquery,Node.js,Ajax,在我的代码的else条件中,我想删除preventDefault()并提交表单 我不知道该怎么做 if(email.val() != ""){ //check email e.preventDefault(); $.ajax({ type: 'post', url: '/register/check-email', data: {

在我的代码的
else
条件中,我想删除preventDefault()并提交表单

我不知道该怎么做

if(email.val() != ""){
            //check email
            e.preventDefault();
            $.ajax({
                type: 'post',
                url: '/register/check-email',
                data: {email: email.val()},
                success: (data) => {
                    console.log(data);
                    if(data == 1){
                        name.css('border', '1px solid #248ea9');
                        email.css('border', '1px solid red');
                        $("div.wrapper div.right div.form form small.error-name").hide();
                        $("div.wrapper div.right div.form form small.error-email").hide();
                        $("div.wrapper div.right div.form form small.error-email-found").show();
                    }else{
                        //remove preventDefault()
                    }
                }
            })
        }

我猜您在表单的按钮中执行了
e.preventDefault()
,这将阻止表单的提交,如果您想继续提交,可以直接使用表单的
submit()
方法,如下所示:

if(email.val()!=“”){
//查看电子邮件
e、 预防默认值();
$.ajax({
键入:“post”,
url:“/注册/检查电子邮件”,
数据:{email:email.val()},
成功:(数据)=>{
控制台日志(数据);
如果(数据==1){
name.css('border','1px solid#248ea9');
css('border','1px实心红色');
$(“div.wrapper div.right div.form form small.error name”).hide();
$(“div.wrapper div.right div.form form small.error email”).hide();
$(“div.wrapper div.right div.form form small.error email found”).show();
}否则{
//删除默认值()
//获取表格并提交
$(“#表格”)。提交()
}
}
})
}

无论您将e.preventDefault()放在何处,还是放在底部,它都可以正常工作

如果在表单上有操作,则可以在启动提交块功能后立即将其放置

var submit = function (e) {
    e.preventDefault()
}
我不太了解您的案例,但您可以使用其他方法,如:

e。停止传播()

e、 停止即时复制()


进一步阅读:

preventDefault()
将不会在
else
块中运行,因为您尚未将其放入其中。或者更确切地说,如果触发
else
代码块,则第一组
{}
中的任何代码都不会运行。这是一个或另一个。你不能删除一开始就不存在的东西。它是异步的,你不能这样做it@AlonEitan
$.ajax()
是一个异步任务,但是为什么不能在
else
分支中提交表单呢?@Andreas因为OP试图阻止依赖于来自server@Saad
this
应该是表单,因此
this.submit()
也可以,因此,不需要再次查询DOM,也不需要额外的jQuery对象。它位于ajax回调中,当然,它放在哪里很重要!据我所知,你在提出要求之前没有把它写下来。我告诉你把它放在if声明之前。if块的外侧。并解释你想做什么你的默认行为是什么形式的?我的意思是,告诉我为什么你首先需要e.preventDefault。但是OP特别询问了一个案例,他想在ajax
success
回调中使用它——这就是问题所在