如何在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@Saadthis
应该是表单,因此this.submit()
也可以,因此,不需要再次查询DOM,也不需要额外的jQuery对象。它位于ajax回调中,当然,它放在哪里很重要!据我所知,你在提出要求之前没有把它写下来。我告诉你把它放在if声明之前。if块的外侧。并解释你想做什么你的默认行为是什么形式的?我的意思是,告诉我为什么你首先需要e.preventDefault。但是OP特别询问了一个案例,他想在ajaxsuccess
回调中使用它——这就是问题所在