我正在开发一个 AJAX 登录系统。目前,当用户点击“登录”链接时,登录表单会动态加载。由于我使用 AJAX,所以当用户单击提交按钮时,我希望防止表单实际提交。我尝试将以下代码作为我的加载函数的一部分,并且表单正确加载,但表单仍然正常提交。
$('#loginBox').load('loginform.php');
$('#loginBox form').submit(function(event) {
event.preventDefault();
});
我该如何解决这个问题?
我正在开发一个 AJAX 登录系统。目前,当用户点击“登录”链接时,登录表单会动态加载。由于我使用 AJAX,所以当用户单击提交按钮时,我希望防止表单实际提交。我尝试将以下代码作为我的加载函数的一部分,并且表单正确加载,但表单仍然正常提交。
$('#loginBox').load('loginform.php');
$('#loginBox form').submit(function(event) {
event.preventDefault();
});
jQuery.load是一个异步函数。
这意味着当你尝试匹配"#loginBox form"时,表单可能(还)不可用。 为了确保在表单加载后执行您的代码,您必须将代码作为回调函数传递给load。
$('#loginBox').load("form.html", function() {
$('#loginBox form').submit(function(event) {
event.preventDefault();
});
});
顺便说一下 - 在你的情况下,无论你使用event.preventDefault()还是return false都没有关系。它们都可以防止表单被提交。(参见event.preventDefault() vs. return false)
$('#loginBox form').submit(function(event) {
return false;
});
$('#loginBox form').submit(function(event) {
return false;
});