【发布时间】:2019-12-14 00:59:14
【问题描述】:
在我的代码的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()
}
}
})
}
【问题讨论】:
-
preventDefault()不会在else块中运行,因为您还没有把它放在那里。或者更确切地说,如果您的else代码块触发,第一组{ }中的任何代码都不会运行。这是一个或另一个。你不能删除一开始就不存在的东西。 -
它是异步的,你不能这样做
-
@AlonEitan
$.ajax()是一个异步任务,但是为什么不能在else分支提交表单呢? -
@Andreas 因为 OP 试图阻止依赖于服务器响应的事情
-
@Saad
this应该是表单,因此this.submit()也可以工作,因此无需再次查询 DOM,也无需额外的 jQuery 对象。
标签: javascript jquery node.js ajax