gpt4 book ai didi

javascript - .preventDefault() 在条件中不起作用

转载 作者:行者123 更新时间:2023-11-28 12:21:27 24 4
gpt4 key购买 nike

我遇到了一点问题。当提交表单时,我不想检查有关它的一些事情,如果有问题,我想阻止它提交,然后在客户端显示错误。除了表单不断提交之外,一切似乎都工作正常。它甚至在提交之前在客户端显示一瞬间的错误。

$('#register').on('submit', function (e) {
e.preventDefault();

var username = $("#register-username"),
name = $("#register-name"),
email = $("#register-email"),
password = $("#register-password"),
confirmPassword = $("#register-confirmPassword");

checkUsername(function (res) {
if (res) {
checkEmail(function (res) {
if (res) {
this.submit();
} else {
clearErrors();
email.toggleClass('input-error');
}
});
} else {
clearErrors();
username.toggleClass('input-error');
}
});
});



function checkEmail(callback) {
$.get("/checkEmail/" + $('#register-email').val(), function (data) {
if ( data == undefined ) {
callback(true);
} else {
callback(false);
}
});
}

function checkUsername (callback) {
$.get("/checkUsername/" + $('#register-username').val(), function (data) {
if ( data == undefined ) {
callback(true);
} else {
callback(false);
}
});
}

function clearErrors () {
var arr = [
$("#register-username"),
$("#register-name"),
$("#register-email"),
$("#register-password"),
$("#register-confirmPassword")
];

arr.forEach(function(el) {
el.removeClass('input-error');
});
}

更新:现在我只是把自己搞糊涂了。 checkUsername() 从我的服务器返回未定义,我知道这一事实,但不知何故它到达了调用 checkUsername() 的“else”语句。我已经添加了其余的代码。应该消除一些困惑。

最佳答案

preventDefault 的调用是通过您传递给 checkUsername 的匿名回调函数进行的。如果异步调用匿名函数,那么取消事件就来不及了。

关于javascript - .preventDefault() 在条件中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37232792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com