Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX、jQuery、Javascript、表单提交;setTimout()问题_Jquery_Ajax_Forms_Submit_Settimeout - Fatal编程技术网

AJAX、jQuery、Javascript、表单提交;setTimout()问题

AJAX、jQuery、Javascript、表单提交;setTimout()问题,jquery,ajax,forms,submit,settimeout,Jquery,Ajax,Forms,Submit,Settimeout,当我点击表单中的输入“添加”时,我想在提交前显示一条消息3秒钟 我真的不明白为什么我的代码不起作用。当我点击“添加”时,用户被添加&我立即被重定向到我的另一个页面。没有消息出现,也没有3秒的延迟 有人能帮我吗 $('.form').submit(函数(){ $(“#反馈”).show(); setTimeout(函数(){ $('.form').submit(); }, 3000); }); #反馈{ 显示:无; } 登录: 这里有很多问题 您没有停止表单提交,因此只要单击“添加”,表单就会

当我点击表单中的输入“添加”时,我想在提交前显示一条消息3秒钟

我真的不明白为什么我的代码不起作用。当我点击“添加”时,用户被添加&我立即被重定向到我的另一个页面。没有消息出现,也没有3秒的延迟

有人能帮我吗

$('.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&而不是一个类,那么没有什么不同?