AJAX、jQuery、Javascript、表单提交;setTimout()问题
当我点击表单中的输入“添加”时,我想在提交前显示一条消息3秒钟 我真的不明白为什么我的代码不起作用。当我点击“添加”时,用户被添加&我立即被重定向到我的另一个页面。没有消息出现,也没有3秒的延迟 有人能帮我吗AJAX、jQuery、Javascript、表单提交;setTimout()问题,jquery,ajax,forms,submit,settimeout,Jquery,Ajax,Forms,Submit,Settimeout,当我点击表单中的输入“添加”时,我想在提交前显示一条消息3秒钟 我真的不明白为什么我的代码不起作用。当我点击“添加”时,用户被添加&我立即被重定向到我的另一个页面。没有消息出现,也没有3秒的延迟 有人能帮我吗 $('.form').submit(函数(){ $(“#反馈”).show(); setTimeout(函数(){ $('.form').submit(); }, 3000); }); #反馈{ 显示:无; } 登录: 这里有很多问题 您没有停止表单提交,因此只要单击“添加”,表单就会
$('.form').submit(函数(){
$(“#反馈”).show();
setTimeout(函数(){
$('.form').submit();
}, 3000);
});代码>
#反馈{
显示:无;
}
登录:
这里有很多问题
您没有停止表单提交,因此只要单击“添加”,表单就会被提交
每次尝试使用提交触发器提交表单时,都会递归调用事件侦听器
代码应该如下所示
登录:
您的问题是输入类型“提交”。
以下是您的解决方案:
登录:
问题是因为您没有停止表单提交。您需要在引发的submit
事件上调用preventDefault()。从那里,当计时器过期时,需要在底层DOM元素上引发submit
事件。这是因为如果在jQuery对象上触发事件,它将被submit
事件处理程序捕获并再次阻止
还请注意,虽然从技术上讲,通过将按钮转换为type=“button”
也可以实现您所需的功能,但这不是一个可行的解决方案。首先,当您在任何输入字段中按return键时,它会中断表单提交的功能。其次,它打破了可访问性规则。第三,这意味着如果任何人在他们的浏览器中禁用了JS,那么将无法提交您的表单
说了这么多,试试这个:
$('.form')。提交(函数(e){
e、 预防默认值();
$(“#反馈”).show();
setTimeout(函数(){
$('.form')[0]。提交();
}, 3000);
});代码>
#反馈{
显示:无;
}
登录:
到底是什么不起作用?抱歉,这篇文章现在已经编辑请注意,更改为type=“button”
不是一个好主意。看看我的答案,是的。这也是一个好主意。请注意,更改为type=“button”
不是一个好主意。看看我的答案。哇,谢谢你,罗里!事实上,这是正确的,它工作得很好但是我仍然不明白“$('.form')[0]”,为什么要添加一个“[0]”来检索元素
对象,而不是jQuery对象。您需要在该问题上引发submit
事件以防止无限循环。没问题,很高兴为您提供帮助。好的,非常感谢您的澄清!如果表单依赖于一个ID&而不是一个类,那么没有什么不同?